python - 如何使用带有熊猫的for循环附加列?
问题描述
我有一个城市的人口数据,分为 10 个区域。给出了人口增长率,我想计算每个区域未来十年的人口,并将每年的人口添加到单独的列中。我可以追加一列,但之后,无法使用最新的追加列追加下一列。我能够一一追加列,这不是一个好方法
data['zone_pop'] = data['zone_pop'].apply(lambda zone_pop: population(zone_pop))
请帮我解决一下这个。
解决方案
尝试使用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
如果它不起作用,我可能误解了您的数据是如何存储的。
推荐阅读
- android - SensorManager requestTriggerSensor 返回 false
- javascript - 使用扩展语法具有两个定义的调用方法
- django - 如何在 Django 表单中使用 TimeInput 小部件?
- sparql - !a 在 SPARQL 中是什么意思?
- google-cloud-firestore - 参数不可分配给 CollectionReference 错误。完全遵循 AngularFire2 文档
- android - 即使在 manifest.xml 中指定了父活动,为什么向上导航关闭应用程序而不是定向到父活动?
- android - 当应用程序在 ios 设备中关闭时,点击时的离子本地通知不起作用
- node.js - 在 Laravel 中使用 Process 时命令执行超时
- dart - 将字符串从firestore保存到变量
- php - 使用 Phalcon PHP 作为 json 返回验证消息的最佳方法是什么