【发布时间】:2021-05-28 13:07:45
【问题描述】:
我试图找出一个系列的值是否出现在另一个 df 中。这是一个简单的例子:
将熊猫导入为 pd
s=pd.Series([1.1,2.2])
df=pd.DataFrame()
df['a']=[1.1,3.3]
df['b']=[4.4,5.5]
我想检查任何列的 df 中是否存在“1.1”,如果存在则获取值 True。我将其用作布尔掩码,以便我可以将其用于另一个 df 的选择标准。
我试过了:
>>> s.isin(df)
0 False
1 False
还有:
>>> s.values == df
a b
0 True False
1 False False
看起来这是在正确的轨道上,所以我尝试从中派生一个掩码:
>>> np.sum(s.values == df, axis=1) >0
0 True
1 False
dtype: bool
看起来不错,但是当我在我的实际数据上尝试这个时,我得到了一个不寻常的错误:
我只是尝试执行以下 3 个打印语句,然后我得到了:
print(df)
print(series)
print(np.sum([series.values==df], axis=1) >0)
3rd 2nd 1st
Date
1995-01-03 NaN NaN NaN
1995-01-04 NaN NaN NaN
1995-01-05 NaN NaN NaN
1995-01-06 NaN NaN NaN
1995-01-09 NaN NaN NaN
... ... ... ...
2021-05-19 19.531345 16.888084 15.596825
2021-05-20 19.422386 16.571087 14.174667
2021-05-21 19.283871 16.112516 14.281031
2021-05-24 19.167412 15.726680 14.438169
2021-05-25 19.157773 15.488945 14.616952
[6815 rows x 3 columns]
Date
1995-01-03 NaN
1995-01-04 NaN
1995-01-05 NaN
1995-01-06 NaN
1995-01-09 NaN
...
2021-05-19 14.016911
2021-05-20 14.174667
2021-05-21 14.281031
2021-05-24 14.438169
2021-05-25 14.616952
Name: series_name, Length: 6815, dtype: float64
CRITICAL:root:Global try/catch caught an unhandled exception
ERROR:root:Unable to coerce to Series, length must be 3: given 6815
ValueError: Unable to coerce to Series, length must be 3: given 6815
系列和数据框和系列的大小似乎是正确的,并且系列中的最后 4 个值(以 14.616952 结尾)与数据框最后一列相匹配,因此我希望掩码此时具有“真”值?
如果有人能诊断出这个错误,那真的很有帮助吗?非常感谢
【问题讨论】: