如何将使用for循环的列附加到pandas?

2024-06-12 00:53:57 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

请帮我做这个


Tags: 数据方法lambda区域zonedatapopapply
1条回答
网友
1楼 · 发布于 2024-06-12 00:53:57

尝试使用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,其中包含一列“population\u zone”,每个区域有10个索引。和变化率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

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

相关问题 更多 >