![](/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.