如何在 python 中使用 groupby 处理时间索引
How to handle Time index with using groupby in python
我有一个包含多个变量的 csv 文件。
在变量中,日期和时间是单独包含的。
下图是我的数据形式:
Date Time Axis1 Axis2 Axis3
. . . . .
. . . . .
2017-10-15 13:40:00 20 0 40
2017-10-15 13:40:10 40 10 100
2017-10-15 13:40:20 50 0 0
2017-10-15 13:40:30 10 10 60
2017-10-15 13:40:40 0 0 20
2017-10-15 13:40:50 0 0 10
2017-10-16 06:20:30 10 0 10
2017-10-16 06:20:40 70 0 10
2017-10-16 06:20:50 20 100 80
. . . . .
. . . . .
而且行数更多(一万多)
您可能会注意到 10/15 和 10/16 之间存在一些 时间间隔。
我想按分钟对所有三个轴值求和。
我期望的是这个结构:
Date Time Axis1 Axis2 Axis3
. . . . .
. . . . .
2017-10-15 13:40:00 120 20 230
2017-10-16 06:20:00 100 100 100
2017-10-16 06:21:00 ? ? ?
. . . . .
. . . . .
我尝试使用 groupby、resample 和 pd.Grouper,但它对我不起作用。
主要问题是 time 索引不是从 13:40:00 开始的,而是在我把时间作为索引 使用 groupby 后从 00:00:00 开始('Date') 和重采样('1Min').sum().
感谢您的帮助!
让我们试试:
df = df.set_index(pd.to_datetime(df['Date']+' '+df['Time'], format='%Y-%m-%d %H:%M:%S'))
df.groupby(df.index.floor('T')).sum()
输出:
Axis1 Axis2 Axis3
2017-10-15 13:40:00 120 20 230
2017-10-16 06:20:00 100 100 100
注意:在pd.to_datetime
中使用format
参数来帮助提高效率。使用 floor
避免在丢失的时间上重新采样或分组。
我有一个包含多个变量的 csv 文件。
在变量中,日期和时间是单独包含的。
下图是我的数据形式:
Date Time Axis1 Axis2 Axis3
. . . . .
. . . . .
2017-10-15 13:40:00 20 0 40
2017-10-15 13:40:10 40 10 100
2017-10-15 13:40:20 50 0 0
2017-10-15 13:40:30 10 10 60
2017-10-15 13:40:40 0 0 20
2017-10-15 13:40:50 0 0 10
2017-10-16 06:20:30 10 0 10
2017-10-16 06:20:40 70 0 10
2017-10-16 06:20:50 20 100 80
. . . . .
. . . . .
而且行数更多(一万多)
您可能会注意到 10/15 和 10/16 之间存在一些 时间间隔。
我想按分钟对所有三个轴值求和。
我期望的是这个结构:
Date Time Axis1 Axis2 Axis3
. . . . .
. . . . .
2017-10-15 13:40:00 120 20 230
2017-10-16 06:20:00 100 100 100
2017-10-16 06:21:00 ? ? ?
. . . . .
. . . . .
我尝试使用 groupby、resample 和 pd.Grouper,但它对我不起作用。
主要问题是 time 索引不是从 13:40:00 开始的,而是在我把时间作为索引 使用 groupby 后从 00:00:00 开始('Date') 和重采样('1Min').sum().
感谢您的帮助!
让我们试试:
df = df.set_index(pd.to_datetime(df['Date']+' '+df['Time'], format='%Y-%m-%d %H:%M:%S'))
df.groupby(df.index.floor('T')).sum()
输出:
Axis1 Axis2 Axis3
2017-10-15 13:40:00 120 20 230
2017-10-16 06:20:00 100 100 100
注意:在pd.to_datetime
中使用format
参数来帮助提高效率。使用 floor
避免在丢失的时间上重新采样或分组。