我有这个df:
A B C D
a d a z
b c z c
我的目标是提取列名称,其中df ==' z'所以我用过:
df['ColumnNames'] = df.where(df=='z' ).stack().reset_index().groupby('level_0')['level_1'].apply('+ '.join)
以前工作得很好;但今天我收到一个错误说:" TypeError:无法将[' z']与块值进行比较"
有谁知道为什么会这样?非常感谢!
答案 0 :(得分:2)
你的代码在我身边工作正常,检查你的df中是否包含空格,我们也用
缩短它df[df=='z'].stack()
Out[216]:
0 D z
1 C z
dtype: object
df[df=='z'].stack().index.get_level_values(1)
Out[218]: Index(['D', 'C'], dtype='object')
来自PiR的上述评论
我的猜测是你在比较int和str时有一个bandas的版本。尝试df.astype(object)=='z'