Pandas DataFrame 中取單個值的讀取和修改以及索引的修改


取DataFrame里面某個位置的值

知道index的時候:

這里用index做循環,去每一行某一列的值,直接用 df.loc[index][column name] 即可

for j in raw.index:
    chs_map = china_map[china_map['city_name']==raw.loc[j]['MAP_CITY']]
    sjz_map = china_map[china_map['prv_name']==raw.loc[j]['MAP_PRV']]

不知道index的時候

這里取某一行某一列的值,得用函數,要么出來的是一個列表而非對應位置的值

for j in raw['city'].unique()
    chs_map = china_map[china_map['city']==j]['MAP_CITY'].max()
    sjz_map = china_map[china_map['city']==j]['MAP_PRV'].max()

修改對應位置的值

知道index 和列名的時候

data2.loc[3,'hhd'] = 0

不知道index 根據條件修改的時候

多個條件, 與或非 找到對應的行, 后面要改的列,最后填值

HD.loc[(HD['STATUS']=='a'|(HD['STATUS']=='b'),'FLAG']=1

所有查詢

df[row_start_index, row_end_index] 查對應行
df[0:]	#第0行及之后的行,df的全部數據
df[:2]	#第3行之前的數據不包含第三行 左開右閉
df[0:1]	#第0行
df[1:3] #第2行到第3行(不含第4行)
df[-1:] #最后一行
df[-3:-1] #倒數第3行和倒數第2行,因為沒有-0,所以沒有最后一行



df.loc[index,column] (使用索引值)
data2.loc['a','segments_name']  #  上面提到的直接取值
data2.loc['a',['segments_name','cnt_case_with_segment']] # 一行兩列轉置成個列表
data2.loc['a':'c',['segments_name','cnt_case_with_segment']]	 #選取第1行到第3行的數據, 這里面是全閉區間 這里生成dataframe

data.loc[data['gender']=='m','name'] 	 #選取gender列是m,name列的數據
data.loc[data['gender']=='M',['name','age']] #選取gender列是m,name和age列的數據

loc 修改

df.loc['a','name'] = 'aa' #修改index為‘a’,column為‘name’的那一個值為aa。
df.loc['a'] = ['bb','ff',11] #修改index為‘s’的那一行的所有值。
df.loc['a',['name','age']] = ['bb',11]    #修改index為‘a’,column為‘name’的那一個值為bb,age列的值為11。
iloc[row_index, column_index] (使用索引位置)
data2.iloc[0,0]		#第1行第1列的數據
data2.iloc[1,2]		#第2行第3列的數據
data2.iloc[[1,3],0:2]#第2行和第4行,從第1列到第2列(左閉右開不包含第3列)的數據
data2.iloc[1:3,[1,2]]	#第2行到第3行(不包含第1,4行),第2列和第3列的數據

iloc 修改

df.iloc[1,2] = 19   #修改一無素
df.iloc[:,2] = [11,22,33] #修改一整列
df.iloc[0,:] = ['lily','F',15] #修改一整行

.at .iat .ix

#at函數(使用索引值訪問單個元素)
df.at['a','A']
#iat函數(使用索引位置訪問單個元素)
df.iat[0,0]
#ix函數(loc與iloc的混合) 切片索引+普通索引同時使用時候的交叉索引
df.ix[0:2,'A':'C']

列索引的修改

學習dataframe的時候,發現他不可以修列中的某一個名字進行修改,那么就只能對所有的columns修改,先將columns這個index對象改成列表操作完后再重新賦值
ret = list(df1.columns)
ret[-1] = 'd'
df1.columns = ret


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM