dataframe 空值替换为0_dataframe取元素方法总结
dataframe是pandas包的重要對象,熟練掌握dataframe的基本操作是很有必要的。
下面就總結一下dataframe取行列元素的基本操作。
一. DataFrame的基本結構
可以理解為一個矩陣,所有的行名保存在index, 列名保存在columns(注意:一個是單數(shù),一個是復數(shù))。寫程序的時候不僅要調用pandas (import pandas as pd), 還要記得調用numpy這個包:(import numpy as np), pandas不默認包含numpy。
構建一個3×3的dataframe如下:
df = pd.DataFrame(np.arange(9).reshape(3, 3), index = ['row1', 'row2', 'row3'], columns=['col1', 'col2','col3'])
例子里面行名df.index=Index(['row1','row2','row3'],dtype='object')
以及df.columns=Index(['col1','col2','col3'],dtype='object')。(Index對象用來保存標簽數(shù)據(jù))。
二. 按索引或行列名選取DataFrame的行和列的方法
1)用列名取一列 (不推薦)
df['col1']即取得第一列,是一個Series對象。
注意:用df['row1'],df[0],df[:,0],df[0,:]統(tǒng)統(tǒng)都會報錯的,這類命令只能用來按列名取一列。(ugly的設計!)
2)按行號取行(不推薦)
df[0:2]代表取得第0行和第1行
注意:只取一行的話,要用df[0:1],不能用df[0]。(ugly的設計!)
3)使用iloc按行號列號來取(推薦)
取一行:df.iloc[0]或df.iloc[0,:]
取多行:df.iloc[[0,2]]或df.iloc[[0,2],:]
取連續(xù)多行:df.iloc[0:2]或df.iloc[0:2,:]
取一列:df.iloc[:,0]
取多列:df.iloc[:,[0,2]]或df.iloc[:,[0,2]]
取連續(xù)多列:df.iloc[:,0:2]
注意:
- 取行的時候可以不提列,也可以用",:"來指全列。
- 取列的時候必須用":,"來指定全行。
- 可以使用一個數(shù)字來代表一個,可以使用一個list [a,b]代表多個,也可以使用a:b代表連續(xù)多個。
4)使用loc按行名列名來取(推薦)
取一行:df.loc['row1']或df.loc['row1',:]
取多行:df.loc[['row1','row2']]或df.loc[['row1','row2'],:]
取連續(xù)多行:df.loc['row1':'row2']或df.loc['row1':'row2',:]
取一列:df.loc[:,'col1']
取多列:df.loc[:,['row1','row2']]
取連續(xù)多列:df.loc[:,'row1':'row2']
注意:
- 取行的時候可以不提列,也可以用",:"來指全列。
- 取列的時候必須用":,"來指定全行。
- 可以使用一個數(shù)字來代表一個,可以使用一個list ['a','b']代表多個,也可以使用'a':'b'代表連續(xù)多個。
5)使用ix(不推薦)
ix的使用方法和iloc類似,可以既使用數(shù)字索引,也可以使用行名列名索引。ix目前已經被棄用,就不贅述了。
6)使用iat和at(不推薦)
iat和at只能去單個元素,iat使用索引,at使用行列名,但是其功能被iloc和loc包含,因此不推薦。
總結下來就是:(重點!!!!)
三. 按條件選取DataFrame的行和列
選取行的原理就是:
df.loc[一個由True和False組成的Series]=只包括True對應的行的子矩陣。
選取列的原理就是:
df.loc[:,一個由True和False組成的Series] = 只包括False對應的列的子矩陣。
(注意不可以使用iloc)
例如:df.loc[df['col1']==3],就是取出第一列,凡是對應數(shù)字為3的給True,不為3的給False,然后去所有為True的行。
df.loc[~(df['col1'!=3)] 同上。
而本質上如下命令也可以取得同樣的效果:
df.loc[df.loc[:,'col1']==3,:],
df.loc[df.iloc[:,0]==3,:]。
例如:df.loc[:,df.loc['row1']==1] 就是取出第一行,凡是對應數(shù)字為1的給True,不為1的給False, 然后取所有為True的列。
四. 按條件替換Dataframe某一列或行的值
df.loc[df['col1']==3,'col1']=99, 把第一列中的包含3的元素替換成99。
df.loc['row1',df.loc['row1',:]==1]=99, 把第一行中的包含1的元素替換成99。
本質上原理和第二節(jié)和第三節(jié)加粗部分敘述的原理相同。
五. 按條件替換整個矩陣某些元素的值
原理:對于整個df進行判斷,例如df>4代表一個True和False的矩陣。
然后df[df>4]=100,會把所有True對應的元素替換成100,于是df變成
總結
以上是生活随笔為你收集整理的dataframe 空值替换为0_dataframe取元素方法总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: img标签默认有外边距吗_你知道css的
- 下一篇: linux fcntl 设置阻塞,Lin