问题:我想检查 pandas.Timestamps 列表的哪些条目位于数据帧的 pandas.Timestamp 系列中。问题是,当我使用in运算符检查列表中的值是否在系列中时,会返回一个空列表,即使特定值在系列中也是如此。代码:时间戳列表:dates_range = pd.date_range(start="2019-01-01", end="2019-01-31")type(dates_range[0]) # pandas._libs.tslibs.timestamps.Timestamp包含时间戳的系列:type(_2019["dates"]) # pandas.core.series.Seriestype(_2019["dates"].iloc[0]) # pandas._libs.tslibs.timestamps.Timestampdates_range比较和的第一个值_2019["dates"]:_2019["dates"].iloc[0] == dates_range[0] # True症结:dates_range[0] in _2019["dates"] # Falsedef get_dates_that_exist(data, datetime_arr): return [date for date in datetime_arr if date in data["dates"]] # Returns []为什么会这样呢?如何检查dates_range列表中的日期在_2019[“dates”]中?
1 回答
![?](http://img1.sycdn.imooc.com/5458477300014deb02200220-100-100.jpg)
临摹微笑
TA贡献1982条经验 获得超2个赞
首先检查使用 in 运算符:
在 Series 上使用 Python in 运算符测试索引中的成员资格,而不是值之间的成员资格。
因此,如果想要测试是否至少有一个True
用于比较布尔掩码的第一个值并添加Series.any
:
(_2019["dates"] == dates_range[0]).any()
为了测试所有数据range
是否匹配至少一个值,请使用Series.isin
:
_2019["dates"].isin(dates_range).any()
我想知道有哪些值
DataFrame.loc
与以下一起使用boolean indexing
:
matched = _2019.loc[_2019["dates"].isin(dates_range), 'dates']
如果需要所有列:
df1 = _2019[_2019["dates"].isin(dates_range)]
添加回答
举报
0/150
提交
取消