每月汇总值,熊猫数据框

时间:2020-02-24 23:38:26

标签: python pandas dataframe group-by data-analysis

样本CSV数据,其中第一列是时间戳(日期+时间):

2018-01-01 10:00:00,23,43
2018-01-02 11:00:00,34,35
2018-01-05 12:00:00,25,4
2018-01-10 15:00:00,22,96
2018-01-01 18:00:00,24,53
2018-03-01 10:00:00,94,98
2018-04-20 10:00:00,90,9
2018-04-10 10:00:00,45,51
2018-01-01 10:00:00,74,44
2018-12-01 10:00:00,76,87
2018-11-01 10:00:00,76,87
2018-12-12 10:00:00,87,90

我已经写了一些代码来执行每月汇总值任务,同时等待有人给我一些建议。

无论如何,感谢@moys!

import pandas as pd

df = pd.read_csv('Sample.txt', header=None, names = ['Timestamp', 'Value 1', 'Value 2'])
df1['Timestamp'] = pd.to_datetime(df1['Timestamp'])
df1['Monthly'] = df1['Timestamp'].dt.to_period('M')
grouper = pd.Grouper(key='Monthly')
df2 = df1.groupby(grouper)['Value 1', 'Value 2'].sum().reset_index()

输出为:

Monthly Value 1 Value 2
0   2018-01 202 275
1   2018-03 94  98
2   2018-04 135 60
3   2018-12 163 177
4   2018-11 76  87

如果有一个具有更多列的数据集,该如何修改我的代码以使其自动处理具有更多列的数据集呢?

2018-02-01 10:00:00,23,43,32
2018-02-02 11:00:00,34,35,43
2018-03-05 12:00:00,25,4,43
2018-02-10 15:00:00,22,96,24
2018-05-01 18:00:00,24,53,98
2018-02-01 10:00:00,94,98,32
2018-02-20 10:00:00,90,9,24
2018-07-10 10:00:00,45,51,32
2018-01-01 10:00:00,74,44,34
2018-12-04 10:00:00,76,87,53
2018-12-02 10:00:00,76,87,21
2018-12-12 10:00:00,87,90,98

1 个答案:

答案 0 :(得分:1)

您可以执行以下操作

*empty line*
Real name 1
Username 1
Email 1
Notes 1
*empty line*
*empty line*
Real name 2
Username 2
Email 2
Notes 2
*empty line*
*empty line*
Real name 3
Username 3
Email 3
Notes 3
*empty line*

输出在这里,“日期”列是月份号。

df.groupby(pd.to_datetime(df['date']).dt.month).sum().reset_index()