Python 3.x 将多列合并为一列
我有一个如下所示的数据帧:Python 3.x 将多列合并为一列,python-3.x,pandas,Python 3.x,Pandas,我有一个如下所示的数据帧: col_1 col_2 col_3 col_4 col_5 col_6 234. 61. 71. 23 45k 61 462. 371. 73. 64 70k 66 我想合并第4列、第5列和第6列,使数据帧变成: col_1 col_2 col_3 new_col 234.
col_1 col_2 col_3 col_4 col_5 col_6
234. 61. 71. 23 45k 61
462. 371. 73. 64 70k 66
我想合并第4列、第5列和第6列,使数据帧变成:
col_1 col_2 col_3 new_col
234. 61. 71. col_4=23;col_5=45k;col_6=61
462. 371. 73. col_4=64;col_5=70k;col_6=66
我该怎么做?上面的数据帧就是一个例子。我有最后50列要合并,如new\u col。如有见解,将不胜感激。将词汇理解与
f-string
s一起使用:
cols = ['col_4','col_5','col_6']
f = lambda x: ';'.join(f'{k}={v}' for k, v in x.items())
df['columns_combined'] = df[cols].apply(f, axis=1)
df = df.drop(cols, axis=1)
print (df)
col_1 col_2 col_3 columns_combined
0 234.0 61.0 71.0 col_4=23;col_5=45k;col_6=61
1 462.0 371.0 73.0 col_4=64;col_5=70k;col_6=66
你可以这样做
df['new_col'] = df[df.columns[4:]].apply(
lambda x: ';'.join(x.dropna().astype(str)),
axis=1
)
但这并没有删除第4列、第5列和第6列。我希望这些列也从列表中删除dataframe@John-谢谢,添加了
df=df.drop(cols,axis=1)