在 Pandas 中将每日数据转换为每周数据
Posted
技术标签:
【中文标题】在 Pandas 中将每日数据转换为每周数据【英文标题】:Converting daily data in to weekly in Pandas 【发布时间】:2016-01-29 05:03:25 【问题描述】:我有一个如下所示的数据框:
Index Date Country Occurence
0 2013-12-30 US 1
1 2013-12-30 India 3
2 2014-01-10 US 1
3 2014-01-15 India 1
4 2014-02-05 UK 5
我想将每日数据转换为每周数据,按解剖结构分组,方法是求和。 Itried 重新采样,但输出给出了多索引数据框,我无法从中访问“国家”和“日期”列(请参阅上文)
所需的输出如下:
Date Country Occurence
Week1 India 4
Week2
Week1 US 2
Week2
Week5 Germany 5
【问题讨论】:
贴一些代码总是好的 :) 是的,肯定会那样做... :) 【参考方案1】:您可以在country
上groupby
并在一周内重新采样
In [63]: df
Out[63]:
Date Country Occurence
0 2013-12-30 US 1
1 2013-12-30 India 3
2 2014-01-10 US 1
3 2014-01-15 India 1
4 2014-02-05 UK 5
In [64]: df.set_index('Date').groupby('Country').resample('W', how='sum')
Out[64]:
Occurence
Country Date
India 2014-01-05 3
2014-01-12 NaN
2014-01-19 1
UK 2014-02-09 5
US 2014-01-05 1
2014-01-12 1
而且,你可以使用reset_index()
In [65]: df.set_index('Date').groupby('Country').resample('W', how='sum').reset_index()
Out[65]:
Country Date Occurence
0 India 2014-01-05 3
1 India 2014-01-12 NaN
2 India 2014-01-19 1
3 UK 2014-02-09 5
4 US 2014-01-05 1
5 US 2014-01-12 1
【讨论】:
如前所述,我尝试对每周数据进行重新采样,输出结果与上述类似。但是我如何访问“国家”和“日期”列,因为这是一个多索引数据框。我尝试 droplevel(0) 删除第一级,但没有奏效。那么,有没有其他方法可以让我在同一级别获得“日期”、“国家”、“发生” 用reset_index()
检查更新的解决方案,可行吗?以上是关于在 Pandas 中将每日数据转换为每周数据的主要内容,如果未能解决你的问题,请参考以下文章
通过 Python 中的 pandas 将每日库存数据转换为每周
在 zeppelin 中将 pandas 数据帧转换为 spark 数据帧
在 Pyspark 中将 Pandas 数据帧转换为 Spark 数据帧的 TypeError
如何在 Pandas 数据框中将日期转换为 ISO-8601 DateTime 格式