首頁 > 軟體

Python Pandas多種新增行列資料方法總結

2022-07-11 22:04:44

前言

發現自己學習python 的各種庫老是容易忘記,所有想利用這個平臺,記錄和分享一下學習時候的知識點,以後也能及時的複習,最近學習pandas,那我們來看看pandas新增資料的一些方法

建立一個dataframe

1. 增加列資料

為dataframe增加一列新資料,需要確保增加列的長度與原資料保持一致

如果是增加一列相同資料可以直接輸入

df['level'] = 1

插入的資料是需要通過源資料進行計算的(eval這個方法感覺比較好用)

df.eval('grade_level = grade * level',inplace = True)

使用insert函數可以在指定列新增列資料,這個函數有好幾個引數,使用更加靈活

df.insert(loc, column, value, allow_duplicates=False)

增加列資料的方法還有很多,我只把自己比較常用的記錄了下來

2. 增加行資料

比較多的方法有 loc 、iloc、append都行,先看loc這個方法,它是通過 df.loc[index名稱] = [對應的資料],這個方法要主要index如果是與原表中有重複,則會將原資料修改,如果沒有重複的話,就是在最後面新增對應資料,其中的index名稱是根據輸入的寫入,需要注意!

第二個是通過df.iloc[index位置] = [對應資料] 進行修改這個方法是對原有資料進行修改,並不是增加一行資料

使用append()函數新增一行資料,其中ignore_index=True,否則報錯

append()往往做法比較多的是新增一個另外一個dataframe的資料到原來資料上,爬蟲時候用得比較多,將每一頁的資料儲存到一個臨時的dataframe中,將這個臨時的dataframe資料插入到總的dataframe後面,最後得到總的資料,且效率較高

當然還有concat、merge等方法可以達到相同的效果,下次有機會在繼續學習

補充:pandas根據現有列新新增一列

pandas中一個Dataframe,經常需要根據其中一列再新建一列,比如一個常見的例子:需要根據分數來確定等級範圍,下面我們就來看一下怎麼實現。

def getlevel(score):
    if score < 60:
        return "bad"
    elif score < 80:
        return "mid"
    else:
        return "good"


def test():
    data = {'name': ['lili', 'lucy', 'tracy', 'tony', 'mike'],
            'score': [85, 61, 75, 49, 90]
            }
    df = pd.DataFrame(data=data)
    # 兩種方式都可以
    # df['level'] = df.apply(lambda x: getlevel(x['score']), axis=1)
    df['level'] = df.apply(lambda x: getlevel(x.score), axis=1)

    print(df)

上面程式碼執行結果

    name  score level
0   lili     85  good
1   lucy     61   mid
2  tracy     75   mid
3   tony     49   bad
4   mike     90  good

要實現上面的功能,主要是使用到dataframe中的apply方法。

上面的程式碼,對dataframe新增加一列名為level,level由分數一列而來,如果小於60分為bad,60-80之間為mid,80以上為good。
其中axis=1表示原有dataframe的行不變,列的維數發生改變。

總結

到此這篇關於Python Pandas多種新增行列資料方法的文章就介紹到這了,更多相關Pandas新增行列資料內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com