首页 > 解决方案 > 如何使用带有熊猫的for循环附加列?

问题描述

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

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

请帮我解决一下这个。

标签: pythonpandas

解决方案


尝试使用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

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


推荐阅读