[英]How to combine a dataframe normal column with set column in pandas?
have got a dataframe df有一个 dataframe df
item Space rem_spc nxt_item
Pineapple 0.5 0.5 {Mango, Grape}
need to combine df['item']
and df['nxt_item']
into single column df['com_item']
as given below需要将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
Thanks!谢谢!
Use Series.str.join
for set columns and add item
values:使用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
Or use Series.str.cat
:或者使用Series.str.cat
:
df['com_item'] = df['item'].str.cat( df['nxt_item'].str.join(','), sep=',')
If need create first sets for deduplicated values in com_item
is possible add value item
to set with join in list comprehension:如果需要为com_item
中的去重值创建第一组,则可以添加值item
以在列表理解中加入设置:
df['com_item'] = [','.join(b.union({a})) for a, b in zip(df['item'],df['nxt_item'])]
Sample data for see difference of solutions:查看解决方案差异的示例数据:
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
if you want nxt_item as a list:如果你想要 nxt_item 作为列表:
df['com_item'] = df.apply(lambda row: list(row['nxt_item']) + [row['item']] ,axis=1)
output: output:
item Space rem_spc nxt_item com_item
0 pineapple 0.5 0.5 {Grape, Mango} [Grape, Mango, pineapple]
if you want as a string:如果你想要一个字符串:
df['com_item'] = df.apply(lambda row: ' '.join(list(row['nxt_item']) + [row['item']] ),axis=1)
output: output:
item Space rem_spc nxt_item com_item
0 pineapple 0.5 0.5 {Grape, Mango} Grape Mango pineapple
With pandas.Series.strip
:使用pandas.Series.strip
:
df["com_item"] = df["item"] + "," + df["nxt_item"].astype(str).str.strip("{}")
Output: 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.