使用修改中某一列的值
寫這篇博客主要是因為在修改列值的時候經常遇到bug,但到目前還沒把這種錯誤復現出來。
是中的主要數據結構之一,本篇博客主要介紹如何中某一列的值進行修改。
1 常規方法
這部分主要介紹修改列值的常規方法。為了方便后續說明先構建如下數據:
import pandas as pd import numpy as np df=pd.DataFrame([['A',1],['B',2],['C',5],['D',4],['E',10],['F',13],['G',8]], columns=['col_1','col_2'], index=list('abcdefg'))
df結果如下:
使用一個常量對列中的數據進行修改時,代碼舉例如下:
df1=df.copy() df1['col_1']='H' df1.loc[['a','c','d'],'col_2']=100 #將指定索引的列值進行修改 df1.iloc[4:,-1]=200
df1的結果如下:
當需要對列中的多個值進行修改時更改列的數據類型,可以使用List或array等變量型數據來對其進行修改。具體代碼如下:
df2=df.copy() df2['col_1']=list(range(7)) df2.loc[df2.index<='d','col_2']=np.array([15,20,25,30]) df2.iloc[4:,-1]=np.array([10,5,0])
df2的結果如下:
除了以上兩種數據類型之外,還可以使用型數據來修改列的值。但使用這種方法時,需要索引對齊更改列的數據類型,否則會出錯。具體舉例如下:
df3=df.copy() df3['col_1']=pd.Series([1,2,3,4,5,6,7]) #索引不對齊時不會報錯,但沒有成功修改列值。 df3.loc[['a','b','c'],'col_2']=pd.Series([100,200,300],index=list('abc')) df3.iloc[3:,-1]=pd.DataFrame([[4000],[5000],[6000],[7000]],index=list('cdef'))
其結果如下:
2. 方法
對象自帶的方法()也可以實現列值的修改。該方法中的參數主要有以下幾個:
參數作用
確定需要修改列值的數據。可接受的數據類型有:str, regex, list, dict, , int, float, or None
value
指定修改后的值。可接受的數據類型有:, dict, list, str, regex, None
是否本地置換
limit
指定前后填充的最大次數
regex
正則表達式符號。如果需要在中使用字符串形式的正則表達式對數據進行篩選的話,需要將其設置為True。
填充方式?!畃ad’, ‘ffill’, ‘bfill’, None
創建如下數據,具體如下:
df=pd.DataFrame([['A','A'],['B','B'],['C',5],['D',4]], columns=['col_1','col_2'], index=list('abcd'))
df的結果如下:
#A替換為aaa,B替換為bbb,4替換為100 df_1=df.replace(to_replace=['A','B',4],value=['aaa','bbb',100]) #將A替換為AAAA df_2=df.replace(to_replace='A',value='AAAA') #將A替換為AAAAA,5替換為2000 df_3=df.replace(to_replace={"A":'AAAAA',5:2000})
其結果如下:
#對于col_1列:將A替換為1,B替換為2 #對于col_2列:將A替換為100,B替換為200 df_4=df.replace({"col_1":{'A':1,'B':2},"col_2":{"A":100,"B":200}})
其結果如下:
#將A\B替換成new df_5=df.replace(to_replace=r'[AB]',value='new',regex=True)
其結果如下:
補充:修改某一行某一列的值[坑點]
# df.iloc[index]['column_name'] = val 這種方式是錯誤的 df['column_name'].iloc[i] = val # 正確
總結
關于使用修改中某一列值的文章就介紹至此,更多相關修改某一列的值內容請搜索編程寶庫以前的文章,希望以后支持編程寶庫!
下一節:編程之順序執行與程序的主入口詳解編程技術
前言本章將會講解編程中的順序執行與程序的主入口。1.順序執行(了解)代碼在執行過程中,遵循下面的基本原則:普通語句,直接執行;碰到函數,將函數體載 ...