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

2024-04-20 03:34:30 发布

您现在位置:Python中文网/ 问答频道 /正文

问题:

我想检查熊猫列表的哪些条目。时间戳在熊猫中。数据帧的时间戳系列。 问题是,当我使用in运算符检查列表中的值是否在序列中时,返回一个空列表,即使特定值在序列中也是如此

代码:

  1. 时间戳列表:
dates_range = pd.date_range(start="2019-01-01", end="2019-01-31")
type(dates_range[0]) # pandas._libs.tslibs.timestamps.Timestamp
  1. 包含时间戳的序列:
type(_2019["dates"]) # pandas.core.series.Series
type(_2019["dates"].iloc[0]) # pandas._libs.tslibs.timestamps.Timestamp
  1. 比较dates_range_2019["dates"]的第一个值:
_2019["dates"].iloc[0] == dates_range[0] # True
  1. 关键:
dates_range[0] in _2019["dates"] # False

def get_dates_that_exist(data, datetime_arr):
    return [date for date in datetime_arr if date in data["dates"]] # Returns []

为什么会这样?如何检查日期范围列表中的日期在2019年[“日期”]中


Tags: inpandas列表datadatetype时间range
1条回答
网友
1楼 · 发布于 2024-04-20 03:34:30

第一个检查Using the in operator

Using the Python in operator on a Series tests for membership in the index, not membership among the values.

因此,如果要测试是否至少有一个True用于通过布尔掩码的第一个值进行比较,并添加^{}

(_2019["dates"] == dates_range[0]).any()

对于测试range中的所有数据,如果至少匹配一个值,则使用^{}

_2019["dates"].isin(dates_range).any()

I would like to know WHICH values are there

^{}^{}一起使用:

matched = _2019.loc[_2019["dates"].isin(dates_range), 'dates']

如果需要所有列:

df1 = _2019[_2019["dates"].isin(dates_range)]

相关问题 更多 >