我在 Pandas 資料框中有兩個字串列。Column1 有數千個不同的值,但 column2 有五個字串之一,比如 A、B、C、D 和 E。
我想檢查的是,如果 column1 中的值相同,則 column2 是否具有相同的值,如果它們不同,則確定行的索引。
idx col1 col2
1 X A
2 Y B
3 Y B
4 X A
5 Z C
6 X B
在上面,第 2 行和第 3 行在 column1 中具有相同的值并且在 column 中具有相同的值。所以沒關系。對于第 1、4 和 6 行,A 列中通常為 X,但第 2 列中的值不同(A、A 和 B)。
我需要檢查 Pandas 資料框是否滿足此要求,并確定第 1、4 和 6 行或值 X(如果有)。
uj5u.com熱心網友回復:
使用GroupBy.transform與DataFrameGroupBy.nunique用于獲取各行數不按組唯一值等于1:
df1 = df[df.groupby('col1')['col2'].transform('nunique').ne(1)]
print (df1)
idx col1 col2
0 1 X A
3 4 X A
5 6 X B
或者為了獲取列的值,col1使用DataFrameGroupBy.nunique過濾器索引Series:
s = df.groupby('col1')['col2'].nunique()
vals = s.index[s.ne(1)].tolist()
print (vals)
['X']
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/366379.html
上一篇:使用.loc將熊貓條件分配給多列
下一篇:根據資料框的條件格式添加字串
