我有一個 df 看起來像這樣:
name A B C D
1 bar 1 0 1 1
2 foo 0 0 0 1
3 cat 1 0-1 0
4 pet 0 0 0 1
5 ser 0 0-1 0
6 chet 0 0 0 1
我需要使用 loc 方法根據其他列的值作為一個組在新列('E')中添加值,例如如果值是 [1,0,0,0] 列 E 中的值將為 1我試過這個:
d = {'A': 1, 'B': 0, 'C': 0, 'D': 0}
A = pd.Series(data=d, index=['A', 'B', 'C', 'D'])
df.loc[df.iloc[:, 1:] == A, 'E'] = 1
它沒有用。由于資料集很大,我需要使用 loc 方法或其他基于 numpy 的方法。如果可以避免創建一個系列來比較行也很好,那么以某種方式提取列 ABCD 的值并將它們作為每行的一個組進行比較。
謝謝
uj5u.com熱心網友回復:
A如果匹配中的所有行,您可以將值與test進行比較DataFrame.all:
df.loc[(df == A).all(axis=1), 'E'] = 1
對于0,1列:
df['E'] = (df == A).all(axis=1).astype(int)
df['E'] = np.where(df == A).all(axis=1), 1, 0)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/352634.html
上一篇:為什么我的運動系統會隨機中斷?
下一篇:用Python取矩陣中的元素
