[英]Unique elements between two columns in a dataframe
我剛剛開始使用 Pandas,我對它的靈活性感到驚訝,但我遇到了障礙,需要一些幫助
我有一個數據框 Df:
| Contract | Box1 | Box2 |
| A | Red,White | Red,Black |
| B | Red | White,Black |
| C | Black | Black |
我想找到 Box1 和 Box2 之間不常見的條目,並將它們存儲在兩個新的單獨列中,以便 output 看起來像這樣:
| Contract | Box1_unique | Box2_unique|
| A | White | Black |
| B | Red | White,Black|
| C | - | - |
我試過了
Df['Box1_unique'] = Df['Box1']-Df['Box2']
但這沒有用。
在set.difference
的列表理解中使用zip
- 應該更改順序:
df[['Box1','Box2']] = [(','.join(set(a.split(',')).difference(b.split(','))),
','.join(set(b.split(',')).difference(a.split(','))))
for a, b in zip(df['Box1'], df['Box2'])]
print (df)
Contract Box1 Box2
0 A White Black
1 B Red Black,White
2 C
或者not in
語句的生成器理解 - 排序就像原來的一樣:
df[['Box1','Box2']] = [(','.join(i for i in a.split(',') if i not in b.split(',')),
','.join(i for i in b.split(',') if i not in a.split(',')))
for a, b in zip(df['Box1'], df['Box2'])]
print (df)
Contract Box1 Box2
0 A White Black
1 B Red White,Black
2 C
最后設置-
使用:
df[['Box1','Box2']] = df[['Box1','Box2']].mask(df[['Box1','Box2']].eq(''), '-')
print (df)
Contract Box1 Box2
0 A White Black
1 B Red White,Black
2 C - -
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.