pandas如何修改DataFrame行/列/字段值
pandas修改DataFrame行/列/字段值
增加/修改一列
有如下幾種方法增加一列:
- 增加具有相同值的一列
import pandas as pd dict= {'English':[85,73,98], 'Math':[60,80,58], 'Science':[90,60,74], 'French': [95,87,92] } df=pd.DataFrame(dict,index=['2018','2019','2020']) print(df) print('\n') print('Adding new column:') print('\n') df['Economics']=99 print(df)
結(jié)果如下:
- 增加定制值的一列,此方法也可以修改原有值
df['Economics']=99 df['Economics']=[99,85,56] print(df) df.at[:,'Economics']=[78,85,74] print(df) df.loc[:,'Economics']=[94,87,86] print(df) df2=df.assign(Economics=[92,81,66]) print(df)
輸出如下:
增加/修改一行
語(yǔ)法基本同列,直接上代碼:
# 增加具有相同值的一行 df.at[2021,:]=100 print(df) # 定制值,該方法也可修改該行原有值 df.loc['2022',:]=[89,21,87,59,22] print(df)
輸出如下:
刪除列
代碼:
# 只有刪除一列 del df['Economics'] # 可刪除多列,有多個(gè)參數(shù),其中,axis=1表示列,0表示行,inplace表示是否本地修改,默認(rèn)False,返回修改后的df,原df不變,True則表示修改原來(lái)的df df.drop(['English','Science'],axis=1,inplace=True)
結(jié)果如下:
刪除行
使用drop即可:
import pandas as pd dict= {'English':[85,73,98], 'Math':[60,80,58], 'Science':[90,60,74], 'French': [95,87,92] } df=pd.DataFrame(dict,index=['2018','2019','2020']) df.at[2021,:]=100 df.at[2022,:]=[99,98,97,96] print(df) print('\n') print('Deleting a row:') print('\n') df.drop(['2019'],axis=0,inplace=True) print(df) print('\n') print('Deleting multiple rows:') print('\n') df.drop(df.index[[0,2]],axis=0,inplace=True) print(df)
結(jié)果如下:
修改指定值
可以基于指定的列名和行名修改,也可以根據(jù)指定的行號(hào)和列號(hào)修改。
示例如下:
import pandas as pd dict= {'English':[85,73,98], 'Math':[60,80,58], 'Science':[90,60,74], 'French': [95,87,92] } df=pd.DataFrame(dict,index=['2018','2019','2020']) print(df) # 基于指定的列名和行名修改 using_name=df.Math['2019']=99 print(df) # 根據(jù)指定的行號(hào)和列號(hào)修改 using_index=df.iloc[2,2]=99 print(df)
結(jié)果如下:
注意:
DataFrame提供了豐富的方法來(lái)操作數(shù)據(jù),可以方便地對(duì)行列進(jìn)行增刪改操作。
pandas更改DataFrame中的值
構(gòu)造DataFrame
import pandas as pd import numpy as np dates = pd.date_range('20200315', periods = 5) df = pd.DataFrame(np.arange(20).reshape((5,4)), index = dates, columns = ['A','B','C','D']) print(df) #輸出 ? ? ? ? ? ? ?A ? B ? C ? D 2020-03-15 ? 0 ? 1 ? 2 ? 3 2020-03-16 ? 4 ? 5 ? 6 ? 7 2020-03-17 ? 8 ? 9 ?10 ?11 2020-03-18 ?12 ?13 ?14 ?15 2020-03-19 ?16 ?17 ?18 ?19
運(yùn)用loc、iloc更改值
我們可以利用索引或者標(biāo)簽確定需要修改值的位置。
df.loc['20200318','C'] = 20200318 ? ? #標(biāo)簽索引 df.iloc[2,3] = 20200318 ? ?#數(shù)字索引 print(df) #輸出 ? ? ? ? ? ? ?A ? B ? ? ? ? C ? ? ? ? D 2020-03-15 ? 0 ? 1 ? ? ? ? 2 ? ? ? ? 3 2020-03-16 ? 4 ? 5 ? ? ? ? 6 ? ? ? ? 7 2020-03-17 ? 8 ? 9 ? ? ? ?10 ?20200318 2020-03-18 ?12 ?13 ?20200318 ? ? ? ?15 2020-03-19 ?16 ?17 ? ? ? ?18 ? ? ? ?19
運(yùn)用條件判斷更改值
如果現(xiàn)在的判斷條件是這樣, 我們想要更改B中的數(shù), 而更改的位置是取決于 C的. 對(duì)于C大于6的位置. 更改B在相應(yīng)位置上的數(shù)為0.
df.B[df.C>6] = 0 ? ?#C字段中大于6的那些行在B字段中全都設(shè)為0 print(df) #輸出 ? ? ? ? ? ? ?A ?B ? ? ? ? C ? ? ? ? D 2020-03-15 ? 0 ?1 ? ? ? ? 2 ? ? ? ? 3 2020-03-16 ? 4 ?5 ? ? ? ? 6 ? ? ? ? 7 2020-03-17 ? 8 ?0 ? ? ? ?10 ?20200318 2020-03-18 ?12 ?0 ?20200318 ? ? ? ?15 2020-03-19 ?16 ?0 ? ? ? ?18 ? ? ? ?19
在DataFrame中添加一列
如果對(duì)整列做批處理, 加上一列 ‘E’, 并將 E 列全改為 NaN, 如下:
df['E'] = np.nan print(df) #輸出 ? ? ? ? ? ? ?A ? B ? C ? D ? E 2020-03-15 ? 0 ? 1 ? 2 ? 3 NaN 2020-03-16 ? 4 ? 5 ? 6 ? 7 NaN 2020-03-17 ? 8 ? 9 ?10 ?11 NaN 2020-03-18 ?12 ?13 ?14 ?15 NaN 2020-03-19 ?16 ?17 ?18 ?19 NaN
用上面的方法也可以加上 Series 序列(但是長(zhǎng)度必須對(duì)齊)。
df['F'] = pd.Series([11,22,33,44,55],index = pd.date_range('20200315',periods = 5)) print(df) #輸出 ? ? ? ? ? ? ?A ? B ? C ? D ? E ? F 2020-03-15 ? 0 ? 1 ? 2 ? 3 NaN ?11 2020-03-16 ? 4 ? 5 ? 6 ? 7 NaN ?22 2020-03-17 ? 8 ? 9 ?10 ?11 NaN ?33 2020-03-18 ?12 ?13 ?14 ?15 NaN ?44 2020-03-19 ?16 ?17 ?18 ?19 NaN ?55
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
windows下 兼容Python2和Python3的解決方法
這篇文章主要介紹了windows下 兼容Python2和Python3的解決方法,需要的朋友可以參考下2018-12-12Python繪圖之turtle庫(kù)的基礎(chǔ)語(yǔ)法使用
這篇文章主要給大家介紹了關(guān)于Python繪圖之turtle庫(kù)的基礎(chǔ)語(yǔ)法使用的相關(guān)資料, Turtle庫(kù)是Python語(yǔ)言中一個(gè)很流行的繪制圖像的函數(shù)庫(kù),再繪圖的時(shí)候經(jīng)常需要用到的一個(gè)庫(kù)需要的朋友可以參考下2021-06-06Python使用Matplotlib繪制散點(diǎn)趨勢(shì)線的代碼詳解
Matplotlib是一個(gè)用于數(shù)據(jù)可視化的強(qiáng)大Python庫(kù),其基本功能之一是創(chuàng)建帶有趨勢(shì)線的散點(diǎn)圖,散點(diǎn)圖對(duì)于可視化變量之間的關(guān)系非常有用,本文將指導(dǎo)您使用Matplotlib繪制散點(diǎn)趨勢(shì)線的過(guò)程,涵蓋線性和多項(xiàng)式趨勢(shì)線,需要的朋友可以參考下2025-01-01Python2.7+pytesser實(shí)現(xiàn)簡(jiǎn)單驗(yàn)證碼的識(shí)別方法
這篇文章主要介紹了Python2.7+pytesser實(shí)現(xiàn)簡(jiǎn)單驗(yàn)證碼的識(shí)別方法,簡(jiǎn)單分析了pytesser的安裝及Python2.7環(huán)境下實(shí)現(xiàn)驗(yàn)證碼識(shí)別的相關(guān)操作技巧,需要的朋友可以參考下2017-12-12三行代碼使用Python將視頻轉(zhuǎn)Gif的方法示例
本文主要介紹了三行代碼使用Python將視頻轉(zhuǎn)Gif的方法示例,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-10-10用python3讀取python2的pickle數(shù)據(jù)方式
今天小編就為大家分享一篇用python3讀取python2的pickle數(shù)據(jù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-12-12