簡體   English   中英

比較兩個列的值並從第一列中獲得不同的值

[英]Compare two column values and get distinct values from first column

我想比較column1和column2並從column1獲取唯一值(忽略NaN )。 所以在這種情況下,我應該得到test1test4

另外,我們可以創建結果並將其存儲在另一列中嗎?

    Column1 column2    
0   test1   test2   
1   test2   test3   
2   test3   hello  
3   test4   world   
4     NaN     how  
5     NaN     are   
6     NaN     you

您可以通過執行以下操作獲得這些值

set(df.column1)-set(df.column2)-set([None])

另外,如果要將結果存儲在另一列中,則可以執行以下操作:

import pandas as pd    
df=pd.DataFrame({'column1':['t1','t2','t3',None],'column2':['t1','a',None,None]})
unique_vals=list(set(df.column1)-set(df.column2)-set([None]))
df['new_col']=unique_vals+['None']*(len(df)-len(unique_vals))
df

結果是:

  column1   column2 new_col
0   t1       t1      t2
1   t2       a       t3
2   t3      None    None
3   None    None    None

不引用列名
說明

  • stack是因為這是放置nan而不強制形成矩形的便捷方法。
  • level=1分組與堆疊前按列分組相同。
  • 套用set將允許我使用減法或diff ,這就是我們想要的set.difference
  • [::-1]只是顛倒了順序,所以我得到了正確的區別。

np.diff(df.stack().groupby(level=1).apply(set).values[::-1])

array([{'test4', 'test1'}], dtype=object)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM