問題:我想檢查 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)]
添加回答
舉報
0/150
提交
取消