簡體   English   中英

每月聚合值,pandas 數據框

[英]Monthly aggregated values, pandas dataframe

第一列是時間戳(日期 + 時間)的示例 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

您可以執行以下操作

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

輸出這里,“日期”列是月份數。

  date  val1    val2
0   1   202     275
1   3   94      98
2   4   135     60
3   11  76      87
4   12  163     177

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM