将 pandas 的年值扩展为月

expand year values to month in pandas(将 pandas 的年值扩展为月)
本文介绍了将 pandas 的年值扩展为月的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有按年统计的销售额:

pd.DataFrame({'year':[2015,2016,2017],'value':['12','24','30']})
    year    value
0   2015    12
1   2016    24
2   2017    36

我要外推到月份:

yyyymm value
201501 1 (ie 12/12, etc)
201502 1
...
201512 1
201601 2
...
201712 3

有什么建议吗?

推荐答案

一个想法是将交叉联接与帮助器DataFrame一起使用,将列转换为字符串并添加0Series.str.zfill

df1 = pd.DataFrame({'m': range(1, 13), 'a' : 1})

df = df.assign(a = 1).merge(df1).drop('a', 1)
df['year'] = df['year'].astype(str) + df.pop('m').astype(str).str.zfill(2)
df = df.rename(columns={'year':'yyyymm'})

另一个解决方案是创建MultiIndex并使用DataFrame.reindex

mux = pd.MultiIndex.from_product([df['year'], range(1, 13)], names=['yyyymm','m'])
df = df.set_index('year').reindex(mux, level=0).reset_index()
df['yyyymm'] = df['yyyymm'].astype(str) + df.pop('m').astype(str).str.zfill(2)

print (df.head(15))
    yyyymm value
0   201501    12
1   201502    12
2   201503    12
3   201504    12
4   201505    12
5   201506    12
6   201507    12
7   201508    12
8   201509    12
9   201510    12
10  201511    12
11  201512    12
12  201601    24
13  201602    24
14  201603    24

这篇关于将 pandas 的年值扩展为月的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

How do I read an Excel file directly from Dropbox#39;s API using pandas.read_excel()?(如何使用PANDAS.READ_EXCEL()直接从Dropbox的API读取Excel文件?)
Is there any way to quot;extractquot; the dtype conversion functionality from pandas read_csv?(有没有办法从 pandas Read_CSV中提取数据类型转换功能?)
Highlighting rows based on a condition(根据条件突出显示行)
How to downcast numeric columns in Pandas?(如何在 pandas 中向下转换数字列?)
Sort quot;Datequot; in Multi-Index(在多索引中排序日期(Q))
How to prevent groupby from surclassing index?(如何防止Groupby超越指数?)