我正在尝试查找包含特定项目的非空值的行。 Item_Weight(float)和Item_Identifier(str)都来自数据帧的不同列。
以下是生成DF的代码:
import numpy as np
import pandas as pd
df = pd.DataFrame()
np.random.seed(seed=6)
df['col0']=np.random.randn(100)
lett=['a','b','c','d']
df['col1']=np.random.choice(lett,100)
toz = np.random.randint(0,100,15)
#Randomly set some values of col0 to null.
df.loc[toz,'col0']=np.NaN
df.loc[df.loc[df['col0'].isnull()==False] & df.loc[df['col1']=='b']]
引发TypeError:
TypeError:输入类型不支持ufunc'bitwise_and',和 输入无法安全地强制转换为任何支持的类型 根据施法规则''安全''
df.loc[(df['col0'].isnull() == False) & (df.loc[df['col1'] == 'b'])]
抛出ValueError:
ValueError:操作数无法与形状一起广播 (56,)(2,)
相反,如果我查询:
df.loc[(df['col0'].isnull() == False) & (df.loc[df['col1'] == 'b'])]
我得到另一个TypeError:
TypeError:在不支持块值的情况下无法操作False &amp ;:'bool'和'float'的操作数类型
我能够分别查询每个部分(col0 == Null或col1 =='b')。但我不能使用&操作他们。有解决方法吗?我做错了什么?
答案 0 :(得分:1)
将其更改为:
df_train_1.loc[ ( ~df_train_1['Item_Weight'].isnull() ) & (df_train_1['Item_Identifier'] == 'FDP10') ]