答案 0 :(得分:1)
尝试此操作,pandas.melt
将给定的DataFrame从宽格式转换为长格式,groupBy.apply
将其合并为值。
import pandas as pd
(
pd.melt(df, id_vars="column_1",
value_vars=['column_2', 'column_3'], value_name='column_2')
.astype(str)
.groupby("column_1")['column_2']
.apply(lambda x: "|".join(x)).reset_index()
)
答案 1 :(得分:1)
我将DataFrame.melt
和groupby.agg
与as_index=False
一起使用
new_df = (df.assign(**df[['column2', 'column3']].astype(str))
.melt('column1',
value_vars=['column_2', 'column_3'],
value_name='column_2')
.groupby("column_1", as_index=False)[['column_2']]
.agg( "|".join))
DataFrame.assign
用于通过仅选择第2列和第3列来将列的类型动态更改为字符串。
如果column1
在某些时候不是字符串