我使用以下命令从Python字典中构建了一个DataFrame:
population=pd.DataFrame(population.items(),columns=['Date','population']).set_index('Date').sort_index(ascending=True)
这给了我以下框架population
:
population
Date
2015-08 69
2015-09 65
2015-10 65
2015-11 66
2015-12 71
在该DataFrame中,我使用以下命令创建了另一个具有移动平均值的文件:
population_movav=pd.rolling_mean(population,10)
这给了我以下框架population_movav
:
population
Date
2015-08 68.0
2015-09 69.9
2015-10 71.6
2015-11 71.1
2015-12 71.2
我想把它们结合起来,所以它们是这样的:
population population_movav
Date
2015-08 69 68.0
2015-09 65 69.9
2015-10 65 71.6
2015-11 66 71.1
2015-12 71 71.2
合成,我需要连接它们并更改变量population_movav
的列名。尝试了pd.concat
,但由于某种原因它没有正确运作。
有人可以对它发光吗?
答案 0 :(得分:2)
您需要将pd.concat
与axis=1
一起使用,然后将最后一列重命名为'population_movav':
In [27]: df1
Out[27]:
population
Date
2015-08 69
2015-09 65
2015-10 65
2015-11 66
2015-12 71
In [28]: df2
Out[28]:
population
Date
2015-08 68.0
2015-09 69.9
2015-10 71.6
2015-11 71.1
2015-12 71.2
In [30]: df3 = pd.concat([df1, df2], axis=1)
In [31]: df3.columns = ['population', 'population_movav']
Out[31]:
population population_movav
Date
2015-08 69 68.0
2015-09 65 69.9
2015-10 65 71.6
2015-11 66 71.1
2015-12 71 71.2
修改强>
如果您只需要更改最后一列,您可以执行以下操作:
df3.columns = df3.columns[:-1].tolist() + ['population_movav']
答案 1 :(得分:1)
您可以join
使用print population
population
Date
2015-08-01 69
2015-09-01 65
2015-10-01 65
2015-11-01 66
2015-12-01 71
print population_movav
population
Date
2015-08-01 68.0
2015-09-01 69.9
2015-10-01 71.6
2015-11-01 71.1
2015-12-01 71.2
p = population.join(population_movav, rsuffix="_movav")
print p
population population_movav
Date
2015-08-01 69 68.0
2015-09-01 65 69.9
2015-10-01 65 71.6
2015-11-01 66 71.1
2015-12-01 71 71.2
:
paths
答案 2 :(得分:1)
您可以通过在作业中按名称引用新列来添加新列:
population['population_movav'] = pd.rolling_mean(population, 2, 1)
给你
population population_movav
Date
2015-08 69 69.0
2015-09 65 67.0
2015-10 65 65.0
2015-11 66 65.5
2015-12 71 68.5