问题描述
df = pd.DataFrame({'id':['1','2','3','4'],'name':['Jon','Jack','Jane','Jill'],'A':['C','A','E','B'],'B':['','C','D',],'C':['E','','A'],'D':['','B','D'],'Z':['','C']})
id name A B C D Z
1 Jon C E
2 Jack A C E
3 Jane E D B A
4 Jill B E A D C
我想在相同的列下组织相等的行值:
id name A B C D Z
1 Jon C E
2 Jack A C E
3 Jane A B D E
4 Jill A B C D E
感谢您的帮助。
解决方法
让我们尝试广播:
cols = np.array(['A','B','C','D','Z'])
vals = np.array(['A','E'])
a = (df[cols].values[:,None,:] == vals[None,:,None])
# any(-1) checks if any `cols` is hit
df[cols] = np.where(a.any(-1),vals,'')
输出:
id name A B C D Z
0 1 Jon C E
1 2 Jack A C E
2 3 Jane A B D E
3 4 Jill A B C D E