複数のPandas DataFrame列を異なるトークンで連結しようとしています。
たとえば、私のデータセットは次のようになります。
dataframe = pd.DataFrame({'col_1' : ['aaa','bbb','ccc','ddd'],
'col_2' : ['name_aaa','name_bbb','name_ccc','name_ddd'],
'col_3' : ['job_aaa','job_bbb','job_ccc','job_ddd']})
このようなものを出力したい:
features
0 aaa <0> name_aaa <1> job_aaa
1 bbb <0> name_bbb <1> job_bbb
2 ccc <0> name_ccc <1> job_ccc
3 ddd <0> name_ddd <1> job_ddd
説明 :
各列を "<{}>"で連結します。ここで、{}は増加する数字になります。
これまでに試したこと:
元のDataFrameを変更したくないので、2つの新しいデータフレームを作成しました。
features_df = pd.DataFrame()
final_df = pd.DataFrame()
for iters in range(len(dataframe.columns)):
features_df[dataframe.columns[iters]] = dataframe[dataframe.columns[iters]] + ' ' + "<{}>".format(iters)
final_df['features'] = features_df[features_df.columns].agg(' '.join, axis=1)
私が直面している問題があります、それは最後に<2>を追加していますが、上記のような出力が必要です。また、これはこのタスクを実行するパンダの方法ではありません。どうすればより効率的にすることができますか?
df['features'] = [" ".join(F"{entry}<{num}>"
if ent[-1] != entry
else entry
for num, entry in enumerate(ent) )
for ent in df.to_numpy()]
col_1 col_2 col_3 features
0 aaa name_aaa job_aaa aaa<0> name_aaa<1> job_aaa
1 bbb name_bbb job_bbb bbb<0> name_bbb<1> job_bbb
2 ccc name_ccc job_ccc ccc<0> name_ccc<1> job_ccc
3 ddd name_ddd job_ddd ddd<0> name_ddd<1> job_ddd