【发布时间】:2022-11-26 15:53:27
【问题描述】:
我正在尝试获取包含空值或整数的 z 列中的值:
df = pd.DataFrame({'X': [1, 2, 3, 4],
'Y': [2, 10, 13, 18],
'Z': [3, None, 5, None]})
a = df[(df.X == 1) & (df.Y == 2)].Z.item()
print(a)
#output: 3
b = df[(df.X == 7) & (df.Y == 18)].Z.item()
print(b)
#output: error
它抛出一个值错误:只能将大小为 1 的数组转换为 Python 标量。因为过滤 X 和 Y 列产生的数据框是空的。如果数据框为空,我想将变量 b 分配给 None。
我尝试了以下方法,并且有效:
#checking the length of the dataframe
b = df[(df.X == 1) & (df.Y == 2)].Z.item() if (len(df[(df.X == 7) & (df.Y == 18)]) == 1) else None
print(b)
# output: None
有更好的方法吗?
【问题讨论】:
标签: python pandas dataframe filtering