gpt4 book ai didi

python - 在 While 循环中将行追加到 Pandas Dataframe

转载 作者:行者123 更新时间:2023-12-01 01:16:48 25 4
gpt4 key购买 nike

我编写了一个函数,根据不同列中的值计算每年的预计人口(为简单起见,未显示这些列)。

如何将这些行附加到数据框?

import pandas as pd

data = {
'state': ['Ohio','New York'],
'year': [2000,2000],
'pop': [2.5,3.6]
}
census = pd.DataFrame(data)

def projected_pop_by_year(s):
new_census = pd.DataFrame()
current_pop = census[census['state'] == s]['pop'].values[0]
current_year = census[census['state'] == s]['year'].values[0]
i = 0; count = 1
while (i + 1) <= current_pop:
projected_pop = None # some calculations
data = {
'state' : [s],
'year' : [current_year + count],
'pop': [projected_pop]
}
print((pd.DataFrame(data)))
i += 1; count += 1


projected_pop_by_year("Ohio")

期望的输出:

| State    | Year | Pop   |
|----------|------|-------|
| Ohio | 2000 | 2.5 |
| New York | 2000 | 3.6 |
| Ohio | 2001 | None |
| Ohio | 2002 | None |

我尝试使用 global new_census 在函数外部声明一个新的数据帧,并使用 new_census.append(pd.DataFrame(data)) 附加行。我的代码不起作用。我尝试了pd.concat。那行不通。我尝试在函数内声明一个新的数据框。那没有用。

感谢任何帮助。

最佳答案

这对我有用:

def projected_pop_by_year(s):
new_census = pd.DataFrame()
current_pop = census[census['state'] == s]['pop'].values[0]
current_year = census[census['state'] == s]['year'].values[0]
i = 0; count = 1
my_list = []
while (i + 1) <= current_pop:

projected_pop = None # some calculations
data = {
'state' : [s],
'year' : [current_year + count],
'pop': [projected_pop]
}
my_list.append(pd.DataFrame(data))
#print(pd.DataFrame(data))
i += 1; count += 1
my_list = pd.concat(my_list)
print(census.append(pd.DataFrame(my_list)))
projected_pop_by_year("Ohio")

state year pop
0 Ohio 2000 2.5
1 New York 2000 3.6
0 Ohio 2001 None
0 Ohio 2002 None

说明 在 while 循环之前创建一个列表,并通过附加列表来保存 while 循环的输出。最后将它们连接在一起并附加原始的census数据框。

希望这有帮助。

关于python - 在 While 循环中将行追加到 Pandas Dataframe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54273179/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com