簡體   English   中英

在While循環中將行追加到Pandas Dataframe

[英]Append Rows to Pandas Dataframe in While loop

我編寫了一個函數,該函數根據不同列中的值計算每年的預計人口(為簡單起見,這些列未顯示)。

如何將這些行附加到數據框?

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在函數外部聲明一個新的數據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數據框一起出現。

希望這可以幫助。

有幾種向Pandas DataFrame添加行的方法。 當您知道如何添加行時,可以在while / for循環中以符合您要求的方式進行。 您可以在此處找到將行添加到Pandas DataFrame的不同方法:

https://thispointer.com/python-pandas-how-to-add-rows-in-a-dataframe-using-dataframe-append-loc-iloc/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM