![](/img/trans.png)
[英]How to set the value of a pandas dataframe column with an operation over the same column
[英]How to combine a dataframe normal column with set column in pandas?
有一个 dataframe df
item Space rem_spc nxt_item
Pineapple 0.5 0.5 {Mango, Grape}
需要将df['item']
和df['nxt_item']
组合成单列df['com_item']
如下所示
item Space rem_spc nxt_item com_item
Pineapple 0.5 0.5 {Mango, Grape} Pineapple,Mango,Grape
谢谢!
使用Series.str.join
设置列并添加item
值:
df['com_item'] = df['item'] + ',' + df['nxt_item'].str.join(',')
print (df)
item Space rem_spc nxt_item com_item
0 Pineapple 0.5 0.5 {Grape, Mango} Pineapple,Grape,Mango
或者使用Series.str.cat
:
df['com_item'] = df['item'].str.cat( df['nxt_item'].str.join(','), sep=',')
如果需要为com_item
中的去重值创建第一组,则可以添加值item
以在列表理解中加入设置:
df['com_item'] = [','.join(b.union({a})) for a, b in zip(df['item'],df['nxt_item'])]
查看解决方案差异的示例数据:
print (df)
item Space rem_spc nxt_item
0 Pineapple 0.5 0.5 {'Mango','Grape'}
1 Mango 0.5 0.5 {'Mango','Grape'}
df['nxt_item'] = df['nxt_item'].apply(ast.literal_eval)
df['com_item1'] = [','.join(b.union({a})) for a, b in zip(df['item'],df['nxt_item'])]
df['com_item2'] = df['item'] + ',' + df['nxt_item'].str.join(',')
print (df)
item Space rem_spc nxt_item com_item1 \
0 Pineapple 0.5 0.5 {Grape, Mango} Grape,Mango,Pineapple
1 Mango 0.5 0.5 {Grape, Mango} Grape,Mango
com_item2
0 Pineapple,Grape,Mango
1 Mango,Grape,Mango
如果你想要 nxt_item 作为列表:
df['com_item'] = df.apply(lambda row: list(row['nxt_item']) + [row['item']] ,axis=1)
output:
item Space rem_spc nxt_item com_item
0 pineapple 0.5 0.5 {Grape, Mango} [Grape, Mango, pineapple]
如果你想要一个字符串:
df['com_item'] = df.apply(lambda row: ' '.join(list(row['nxt_item']) + [row['item']] ),axis=1)
output:
item Space rem_spc nxt_item com_item
0 pineapple 0.5 0.5 {Grape, Mango} Grape Mango pineapple
df["com_item"] = df["item"] + "," + df["nxt_item"].astype(str).str.strip("{}")
Output:
print(df)
item Space rem_spc nxt_item com_item
0 Pineapple 0.5 0.5 {Mango, Grape} Pineapple, Mango, Grape
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.