我在DataFrame中匹配了2个列,并在新的' bool'中以布尔值生成结果。柱。 首先我写道:
df_new = df[[7 for 32 in df if df 39 == 'False']]
但它没有用。
然后我只写了匹配列
我的代码是
df['bool'] = (df.iloc[:, 7] == df.iloc[:, 32])
上面的代码匹配位于7和32的列,并将bool
值放在第39列。在此我想切片数据并选择具有false值的行。
Data
我写道:
df_filtered = df[df['bool'] == 'False']
但我得到了Future错误
不确定我在做什么错。 我也试过了
df[df[39] == 'False']
答案 0 :(得分:1)
您可以直接比较列:
df = pd.DataFrame({'a': [1, 2, 3], 'b': [1, 3, 2]})
df['Bool'] = df.a == df.b
>>> df
a b Bool
0 1 1 True
1 2 3 False
2 3 2 False
要过滤False值,请使用否定标记,即~
:
>>> df[~df.Bool]
a b Bool
1 2 3 False
2 3 2 False
答案 1 :(得分:1)
我不知道你的情况,当我使用下面的代码时,我得到“FutureWarning:将来,boolean array-likes将作为布尔数组索引处理”:
>>> import numpy as np
>>> test=np.array([1,2,3])
>>> test3=test[[False,True,False]]
__main__:1: FutureWarning: in the future, boolean array-likes will be handled as a boolean array index
>>> test3=test[np.array([False,True,False])]
>>> test3
array([2])
>>>
我认为这些是两个“FutureWarning”之间的关系,我希望我的情况可以帮助你。