我有一个熊猫DataFrame与“日期”列。现在我需要过滤掉DataFrame中日期在未来两个月之外的所有行。实际上,我只需要保留接下来两个月内的行。
实现这一目标的最佳方式是什么?
我有一个熊猫DataFrame与“日期”列。现在我需要过滤掉DataFrame中日期在未来两个月之外的所有行。实际上,我只需要保留接下来两个月内的行。
实现这一目标的最佳方式是什么?
当前回答
导入熊猫文库
进口熊猫作为pd
步骤1:使用pd.to_datetime()方法将日期列转换为字符串
df['date']=pd.to_datetime(df["date"],unit='s')
第二步:以任何预定的方式进行筛选(即2个月)
df = df[(df["date"] >"2022-03-01" & df["date"] < "2022-05-03")]
步骤3:检查输出
print(df)
其他回答
如果你的日期是通过导入datetime包来标准化的,你可以简单地使用:
df[(df['date']>datetime.date(2016,1,1)) & (df['date']<datetime.date(2016,3,1))]
使用datetime包来标准化你的日期字符串,你可以使用这个函数:
import datetime
datetime.datetime.strptime
你可以用pd。时间戳来执行查询和本地引用
import pandas as pd
import numpy as np
df = pd.DataFrame()
ts = pd.Timestamp
df['date'] = np.array(np.arange(10) + datetime.now().timestamp(), dtype='M8[s]')
print(df)
print(df.query('date > @ts("20190515T071320")')
输出
date
0 2019-05-15 07:13:16
1 2019-05-15 07:13:17
2 2019-05-15 07:13:18
3 2019-05-15 07:13:19
4 2019-05-15 07:13:20
5 2019-05-15 07:13:21
6 2019-05-15 07:13:22
7 2019-05-15 07:13:23
8 2019-05-15 07:13:24
9 2019-05-15 07:13:25
date
5 2019-05-15 07:13:21
6 2019-05-15 07:13:22
7 2019-05-15 07:13:23
8 2019-05-15 07:13:24
9 2019-05-15 07:13:25
看看DataFrame的pandas文档。查询,特别是提到局部变量引用udsing @前缀。在这种情况下,我们引用pd。使用本地别名ts来提供时间戳字符串
如果date列是索引,则使用.loc进行基于标签的索引,或使用.iloc进行位置索引。
例如:
df.loc['2014-01-01':'2014-02-01']
详情见这里http://pandas.pydata.org/pandas-docs/stable/dsintro.html#indexing-selection
如果列不是索引,你有两个选择:
将其作为索引(如果是时间序列数据,可以是临时索引,也可以是永久索引) df [(df(“日期”)> 2013-01-01)& (df(“日期”)< ' 2013-02-01 '))
请看这里的一般解释
注意:.ix已弃用。
导入熊猫文库
进口熊猫作为pd
步骤1:使用pd.to_datetime()方法将日期列转换为字符串
df['date']=pd.to_datetime(df["date"],unit='s')
第二步:以任何预定的方式进行筛选(即2个月)
df = df[(df["date"] >"2022-03-01" & df["date"] < "2022-05-03")]
步骤3:检查输出
print(df)
按日期过滤数据帧的最短方法: 假设你的日期列的类型是datetime64[ns]
# filter by single day
df_filtered = df[df['date'].dt.strftime('%Y-%m-%d') == '2014-01-01']
# filter by single month
df_filtered = df[df['date'].dt.strftime('%Y-%m') == '2014-01']
# filter by single year
df_filtered = df[df['date'].dt.strftime('%Y') == '2014']