我有一个城市的人口数据,分为10个区域。给出了人口增长率,我想计算下一个十年的每个区域的人口,并将每年的人口附加在单独的列中。我可以追加一个列,但是之后,不能使用最新的追加列来追加下一列。我可以一栏追加一列,但这不是一个好方法
data['zone_pop'] = data['zone_pop'].apply(lambda zone_pop: population(zone_pop))
请帮助我。
答案 0 :(得分:0)
尝试使用concat
功能(https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.concat.html)。
在for循环中,您应该具有以下内容:
new_data = pandas.DataFrame(population(data[label]), columns=[label_incr])
data = pandas.concat([data, new_data], axis=1)
label
和label_incr
指的是用于获取当年数据和新年计算的str变量。
编辑(详细语法)
我想您已经有一个数据框data
,其中包含一个带有10个索引(针对每个区域)的“ population_zone”列。以及变化率r
。
上面的代码应该可以工作(至少,我已对伪造的本地数据进行了测试)
current_label = 'population_zone'
for i in range(1, 11):
new_label = 'population_zone_year' + str(i)
new_data = pd.DataFrame((data[current_label] * (1+r/100.)**i).values, columns=[new_label])
data = pd.concat([data, new_data], axis=1)
current_label = new_label
如果它不起作用,我可能会误解了您的数据存储方式。