如何解决如何从每个季度检索3个月,因此使df行数增加3倍熊猫,Python
我的任务很愚蠢,但是还没有找到解决方法, 我有一个很大的df,这是头
Deal Date Period Name Price Quarter Start Quarter End
0 2011-11-01 2011-Q4 30.76 2011-10-01 2011-12-31 23:59:59.999999999
1 2011-11-01 2012-Q1 30.95 2012-01-01 2012-03-31 23:59:59.999999999
2 2011-11-01 2012-Q2 30.67 2012-04-01 2012-06-30 23:59:59.999999999
3 2011-11-01 2012-Q3 29.87 2012-07-01 2012-09-30 23:59:59.999999999
4 2011-11-01 2012-Q4 29.49 2012-10-01 2012-12-31 23:59:59.999999999
我希望有一个额外的列显示“ month”,上面的5行将变为15行,例如初始行0将重复两次
Deal Date Period Name Price Quarter Start Quarter End Month
0 2011-11-01 2011-Q4 30.76 2011-10-01 2011-12-31 23:59:59.999999999 10
1 2011-11-01 2011-Q4 30.76 2011-10-01 2011-12-31 23:59:59.999999999 11
2 2011-11-01 2011-Q4 30.76 2011-10-01 2011-12-31 23:59:59.999999999 12
因为第四季度包括这三个月... 其余行类似。
有没有简单的方法可以做到这一点?谢谢
解决方法
您可以从周期中提取四分之一值,然后对只有12行包含四分之一->月映射的数据框执行pandas.merge。
简化的示例代码:
import pandas as pd
df_test = pd.DataFrame({'quart':[1,2,3,4,1,2],'val': ['a','b','c','d','e','f']})
df_quart_to_month = pd.DataFrame({'quart':[1,4],'month': [1,5,6,7,8,9,10,11,12]})
df_with_months = df_test.merge(df_quart_to_month,on='quart',how='outer')
如果要保留原始顺序:
df_with_months = df_test.reset_index().merge(df_quart_to_month,how='outer').set_index('index')
df_sorted = df_with_months.sort_values(['index','month'],ascending=[True,True])
或者,您可以将数据集根据其季度划分为4个数据帧,将每个子数据帧复制两次并添加相应的月份。然后将所得的12个子数据帧连接在一起。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。