gpt4 book ai didi

python - 如何在DataFrame中将日期转换为Year.Q格式

转载 作者:太空宇宙 更新时间:2023-11-04 05:13:34 24 4
gpt4 key购买 nike

   2000-01   2000-02   2000-03   2000 -04 ......   2016-08
0 1010 43453 5564 45545 15555
1 4565 44646 8989 56565 56565

我有一个这样的数据框。我需要添加一些列,例如“2000q1”,这表示 2000-01、2000-02、2000-03 的平均值。所以第 4-6 个月是第 2 季度,第 7-9 个月是第 3 季度,第 10-12 个月是第 4 季度。我认为结果应该是这样的:

2000q1       2000q2    2000q3   2000q4  2001q1......2016q3
16675.67 15615 ...................................
19400 55665 ...................................

我认为第一步是将列转换为日期时间。

import pandas as pd
df.columns.map(pd.to_datetime)

但我不知道下一步是什么


我有个想法,但行不通。我使用循环。

d = []
for i in range(2000,2017):
i=str(i)
d.append(i+'q'+str(1))
d.append(i+'q'+str(2))
d.append(i+'q'+str(3))
d.append(i+'q'+str(4))
#I create a list contains the date I need. Next step is put mean values in.
d = d[:-1] #remove 2016q4 from list because the date untill 2016-08
for date in d:
for a in range(0,201,3):
average = np.mean(df.iloc[:,a:a+3])
df[date] = average

但是结果显示新列都是NaN值。

最佳答案

您可以将列标题转换为datetime,然后转换为Quarters的to_period,按列名分组并计算沿行方向的平均值:

示例:

import pandas as pd

df
#2000-01 2000-02 2000-03 2000-04
#0 1010 43453 5564 45545
#1 4565 44646 8989 56565

df.columns = pd.to_datetime(df.columns, format="%Y-%m").to_period("Q")
df.groupby(level=0, axis=1).mean()

# 2000Q1 2000Q2
#0 16675.666667 45545.0
#1 19400.000000 56565.0

关于python - 如何在DataFrame中将日期转换为Year.Q格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42381542/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com