Python?Pandas多種添加行列數(shù)據(jù)方法總結(jié)
前言
發(fā)現(xiàn)自己學(xué)習(xí)python 的各種庫老是容易忘記,所有想利用這個(gè)平臺(tái),記錄和分享一下學(xué)習(xí)時(shí)候的知識(shí)點(diǎn),以后也能及時(shí)的復(fù)習(xí),最近學(xué)習(xí)pandas,那我們來看看pandas添加數(shù)據(jù)的一些方法
創(chuàng)建一個(gè)dataframe
1. 增加列數(shù)據(jù)
為dataframe增加一列新數(shù)據(jù),需要確保增加列的長度與原數(shù)據(jù)保持一致
如果是增加一列相同數(shù)據(jù)可以直接輸入
df['level'] = 1
插入的數(shù)據(jù)是需要通過源數(shù)據(jù)進(jìn)行計(jì)算的(eval這個(gè)方法感覺比較好用)
df.eval('grade_level = grade * level',inplace = True)
使用insert函數(shù)可以在指定列添加列數(shù)據(jù),這個(gè)函數(shù)有好幾個(gè)參數(shù),使用更加靈活
df.insert(loc, column, value, allow_duplicates=False)
增加列數(shù)據(jù)的方法還有很多,我只把自己比較常用的記錄了下來
2. 增加行數(shù)據(jù)
比較多的方法有 loc 、iloc、append都行,先看loc這個(gè)方法,它是通過 df.loc[index名稱] = [對(duì)應(yīng)的數(shù)據(jù)],這個(gè)方法要主要index如果是與原表中有重復(fù),則會(huì)將原數(shù)據(jù)修改,如果沒有重復(fù)的話,就是在最后面添加對(duì)應(yīng)數(shù)據(jù),其中的index名稱是根據(jù)輸入的寫入,需要注意!
第二個(gè)是通過df.iloc[index位置] = [對(duì)應(yīng)數(shù)據(jù)] 進(jìn)行修改這個(gè)方法是對(duì)原有數(shù)據(jù)進(jìn)行修改,并不是增加一行數(shù)據(jù)
使用append()函數(shù)添加一行數(shù)據(jù),其中ignore_index=True,否則報(bào)錯(cuò)
append()往往做法比較多的是添加一個(gè)另外一個(gè)dataframe的數(shù)據(jù)到原來數(shù)據(jù)上,爬蟲時(shí)候用得比較多,將每一頁的數(shù)據(jù)保存到一個(gè)臨時(shí)的dataframe中,將這個(gè)臨時(shí)的dataframe數(shù)據(jù)插入到總的dataframe后面,最后得到總的數(shù)據(jù),且效率較高
當(dāng)然還有concat、merge等方法可以達(dá)到相同的效果,下次有機(jī)會(huì)在繼續(xù)學(xué)習(xí)
補(bǔ)充:pandas根據(jù)現(xiàn)有列新添加一列
pandas中一個(gè)Dataframe,經(jīng)常需要根據(jù)其中一列再新建一列,比如一個(gè)常見的例子:需要根據(jù)分?jǐn)?shù)來確定等級(jí)范圍,下面我們就來看一下怎么實(shí)現(xiàn)。
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)
上面代碼運(yùn)行結(jié)果
name score level
0 lili 85 good
1 lucy 61 mid
2 tracy 75 mid
3 tony 49 bad
4 mike 90 good
要實(shí)現(xiàn)上面的功能,主要是使用到dataframe中的apply方法。
上面的代碼,對(duì)dataframe新增加一列名為level,level由分?jǐn)?shù)一列而來,如果小于60分為bad,60-80之間為mid,80以上為good。
其中axis=1表示原有dataframe的行不變,列的維數(shù)發(fā)生改變。
總結(jié)
到此這篇關(guān)于Python Pandas多種添加行列數(shù)據(jù)方法的文章就介紹到這了,更多相關(guān)Pandas添加行列數(shù)據(jù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
分享11個(gè)Python自動(dòng)化操作Excel的方法
這篇文章主要給大家分享的是11個(gè)Python自動(dòng)化操作Excel的方法,自動(dòng)化辦公,我相信很多人都有強(qiáng)烈的需求,今天我教大家如何利用Python自動(dòng)化操作Excel,需要的朋友可以參考一下2022-02-02在 Python 中如何使用 Re 模塊的正則表達(dá)式通配符
這篇文章主要介紹了在 Python 中如何使用 Re 模塊的正則表達(dá)式通配符,本文詳細(xì)解釋了如何在 Python 中使用帶有通配符的 re.sub() 來匹配字符串與正則表達(dá)式,需要的朋友可以參考下2023-06-06