Python 按不连续月份过滤数据帧的最简单方法是什么?
例如,我有2019年1月至2020年7月的数据。我想筛选2019年(1月、5月、8月、9月、12月)和2020年(1月、5月、6月)的数据 做这件事的简单方法是什么Python 按不连续月份过滤数据帧的最简单方法是什么?,python,pandas,datetime,Python,Pandas,Datetime,例如,我有2019年1月至2020年7月的数据。我想筛选2019年(1月、5月、8月、9月、12月)和2020年(1月、5月、6月)的数据 做这件事的简单方法是什么 编辑:它是一个日期时间列这里有一种使用合成数据的方法: dates = pd.date_range("2019-01-01", "2020-07-31", freq="23d") df = pd.DataFrame({"date": dates, &qu
编辑:它是一个日期时间列这里有一种使用合成数据的方法:
dates = pd.date_range("2019-01-01", "2020-07-31", freq="23d")
df = pd.DataFrame({"date": dates, "a": range(len(dates))})
mask = (df.date.dt.month.isin([1, 5, 6, 7, 12]) & (df.date.dt.year == 2019)) | \
(df.date.dt.month.isin([1, 5, 6]) & (df.date.dt.year == 2020))
df[mask]
输出为:
date a
0 2019-01-01 0
1 2019-01-24 1
6 2019-05-19 6
7 2019-06-11 7
8 2019-07-04 8
9 2019-07-27 9
15 2019-12-12 15
16 2020-01-04 16
17 2020-01-27 17
22 2020-05-21 22
23 2020-06-13 23
有一些方法可以获取月份和年份,您可以将其形成一个元组,或者只存储为两列。在这之后,它与您在pandas中执行的常规筛选相同。也许可以将以下函数逻辑应用到存储月份-年份元组的列上
def monthmask(month_year):
list = [...] # List of tuples containing your desired months and years
if month_year in list:
return False
else:
return True
这在很大程度上取决于数据的存储方式。它是DatatimeIndex吗?是Datetime的多索引吗?是字符串列吗?是Datetime列吗?你能分享你的数据片段吗?你看到了吗?您好,请花点时间阅读:如何提供一个索引并相应地修改你的问题。这篇文章可能有助于这样做:这是否回答了你的问题?