为了账号安全,请及时绑定邮箱和手机立即绑定

如何检查时间戳列表的元素是否在包含时间戳的序列中?

如何检查时间戳列表的元素是否在包含时间戳的序列中?

元芳怎么了 2023-09-26 16:33:30
问题:我想检查 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 回答

?
临摹微笑

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)]


查看完整回答
反对 回复 2023-09-26
  • 1 回答
  • 0 关注
  • 101 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信