Python pandas:使用pandas基于时间条件过滤行

2024-09-30 14:21:41 发布

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

我有一个包含数百万行的CSV文件,格式如下:

Amount,Price,Time
0.36,13924.98,2010-01-01 00:00:08
0.01,13900.09,2010-01-01 00:02:04
0.02,13907.59,2010-01-01 00:04:54
0.07,13907.59,2010-01-01 00:05:03
0.03,13925,2010-01-01 00:05:41
0.03,13920,2010-01-01 00:07:02
0.15,13910,2010-01-01 00:09:37
0.03,13909.99,2010-01-01 00:09:58
0.03,13909.99,2010-01-01 00:10:03
0.14,13909.99,2010-01-01 00:10:03

我想先把这些数据归档,然后对过滤后的数据进行一些计算。我使用pandasdata = pd.read_csv()导入它以获得数据帧。你知道吗

然后我将Time列转换为TimeDelta列(我不确定这对于我想做的事情是必要的),在这里我使用

data['TimeDelta'] = pd.to_timedelta(pd.to_datetime(data.Date)-pd.Timedelta(days=14610))/np.timedelta64(1, 'm')

我挣扎的部分来了。我需要一个返回新数据帧的函数,其中我只需要每隔n分钟后的第一行,其中n是用户定义的整数。你知道吗

例如。如果n=5,我的数据的这个函数的期望输出将是:

Amount,Price,Time
0.36,13924.98,2010-01-01 00:00:08
0.07,13907.59,2010-01-01 00:05:03
0.03,13909.99,2010-01-01 00:10:03

n=3的输出是:

Amount,Price,Time
0.36,13924.98,2010-01-01 00:00:08
0.02,13907.59,2010-01-01 00:04:54
0.15,13910,2010-01-01 00:09:37

我尝试过使用floor和余数%来实现这一点,但是作为Python的初学者,我无法让它工作。你知道吗


Tags: 文件csvto数据函数readdatatime
1条回答
网友
1楼 · 发布于 2024-09-30 14:21:41

使用^{}

n=5
df.groupby(pd.Grouper(key = 'Time', freq=f'{n} min')).first()

                      Amount   Price
Time                                 
2010-01-01 00:00:00    0.36  13924.98
2010-01-01 00:05:00    0.07  13907.59
2010-01-01 00:10:00    0.03  13909.99

相关问题 更多 >