如何在熊猫中使用for循环附加列?

时间:2020-04-17 20:51:13

标签: python pandas

我有一个城市的人口数据,分为10个区域。给出了人口增长率,我想计算下一个十年的每个区域的人口,并将每年的人口附加在单独的列中。我可以追加一个列,但是之后,不能使用最新的追加列来追加下一列。我可以一栏追加一列,但这不是一个好方法

data['zone_pop'] = data['zone_pop'].apply(lambda zone_pop: population(zone_pop))

请帮助我。

1 个答案:

答案 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)

labellabel_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

如果它不起作用,我可能会误解了您的数据存储方式