J'essaye de concaténer plusieurs Pandas colonnes DataFrame avec différents jetons.
Par exemple, mon ensemble de données ressemble à ceci:
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']})
Je veux sortir quelque chose comme ceci:
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
Explication:
concattez chaque colonne avec "<{}>" où {} sera des nombres croissants.
Ce que j'ai essayé jusqu'à présent:
Je ne veux pas modifier le DataFrame d'origine, j'ai donc créé deux nouveaux dataframe:
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)
Il y a un problème auquel je suis confronté, il ajoute enfin <2> mais je veux une sortie comme ci-dessus, ce n'est pas non plus la façon de panda de faire cette tâche, comment je peux la rendre plus efficace?
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