我有一个pandas数据框,其中Items列是一个列表。
cust_id Items
100 ['item1','item2','item3']
101 ['item5','item8','item9']
102 ['item2','item4']
我想将上述数据帧转换为以下格式。
cust_id Items
100 item1 item2 item3
101 item5 item8 item9
102 item2 item4
我尝试使用内置字符串替换函数的pandas将其返回原始列而不实际执行字符串替换操作。
df['Items']=(df['Items'].astype(str)).replace({"['":"", "', '":" ", "']":"" },method='string')
请告知
更新
我使用以下代码创建原始数据框。
df=df1.groupby(['cust_id'])['Items'].apply(list).reset_index()
答案 0 :(得分:4)
如果元素确实是list
,那么您可以在列表中使用str.join()
以及series.apply
方法。示例 -
In [159]: df = pd.DataFrame([[100,['item1','item2','item3']],[101,['item5','item8','item9']],[102,['item2','item4']]],columns=['cust_id','Items'])
In [160]: df
Out[160]:
cust_id Items
0 100 [item1, item2, item3]
1 101 [item5, item8, item9]
2 102 [item2, item4]
In [161]: df['Items'] = df['Items'].apply(' '.join)
In [162]: df
Out[162]:
cust_id Items
0 100 item1 item2 item3
1 101 item5 item8 item9
2 102 item2 item4