在熊猫数据框中过滤和处理日期时间

时间:2020-04-06 08:36:25

标签: python pandas dataframe datetime pandasql

好的,伙计们,我想知道怎么回事。我有一只从dataframe拔出的大熊猫MySQL

实际上这是我的查询语法:

query = "SELECT * FROM mywebsite.com WHERE date BETWEEN '2019-12-01' AND '2020-03-31'"

websitedata = pd.read_sql(query,con=engine)

然后我将exported的数据作为CSV。今天reading中的CSV,正在尝试分割chunks

dates中的数据
Dec2019 = df.loc[(df.date >= "2019-12-01") & (df.date <= "2019-12-31")]
Jan2020 = df.loc[(df.date >= "2020-01-01") & (df.date <= "2020-01-31")]
Feb2020 = df.loc[(df.date >= "2020-02-01") & (df.date <= "2020-02-29")]
Mar2020 = df.loc[(df.date >= "2020-03-01") & (df.date <= "2020-03-31")]


len(df) == len(Dec2019) + len(Jan2020) + len(Feb2020) + len(Mar2020) # gives me False

事实len(Dec2019) + len(Jan2020) + len(Feb2020) + len(Mar2020)给出376440

然后len(df)给出384274

如何预览框架以查看问题所在?就像2019年12月,2020年1月,...,2020年3月一样,了解该问题吗?

PS:日期已经是pandas datetime

1 个答案:

答案 0 :(得分:0)

所以我想出了最有效的方法,可以为我提供准确的框架,而不会泄漏日期。

使用datetime dt accessor

Jan2020 = df[df.date.dt.month == 1]
Dec2019 = df[df.date.dt.month == 12]
Feb2020 = df[df.date.dt.month == 2]
Mar2020 = df[df.date.dt.month == 3]

实际上,这现在返回True

len(df) == len(Dec2019) + len(Jan2020) + len(Feb2020) + len(Mar2020)

信用:How to filter a dataframe of dates by a particular month/day?