DataFrame查增改删
查 Read
类list/ndarray数据访问方式
dates = pd.date_range('20130101',periods=10) dates df = pd.DataFrame(np.random.randn(10,4),index=dates,columns=['A','B','C','D']) df #索引 df['A'] df.A df['A']['2013-01-01']#先列后行 df.A['2013-01-01'] df[['A','C']]
下面为Pandas专用的数据访问方式
.loc
通过自定义索引获取数据
#选取某行 df.loc['2013-01-01'] #选取某列 df.loc[:,'A'] #选取特定值 df.loc['2013-01-01','A'] #先行后列 #选取指定的行/列 df.loc[[dates[0],dates[2]],:] #指定行 df.loc[:,['A','B']] #指定列 df.loc[[dates[0],dates[2]],['A','B']]#指定行列 #切片 df.loc['2013-01-01':'2013-01-04',:] #对行切片 df.loc[:,'A':'C'] #对列切片 df.loc['2013-01-01':'2013-01-04','A':'C'] #切片选取连续区块。行,列。左开右闭
.iloc
通过默认索引获取数据
#选取某行 df.iloc[3] #选取某列 df.iloc[:,2] #选取特定值: df.iloc[1,2] #选取指定的行/列 df.iloc[[1,2,4],:] #指定行 df.iloc[:,[0,2]] #指定列 df.iloc[[1,2,4],[0,2]] #指定行列 ,先行后列 #切片 df.iloc[1:3,:] #对行切片: df.iloc[:,1:3] #对列切片: df.iloc[3:5,0:2] #切片选取连续区块。行,列。左开右闭
Boolean索引
#通过某列选择数据: df[df.A > 0] #通过where选择数据: b = df[df > 0] b type(b['A']['2013-01-01']) #通过 isin() 过滤数据: df2 = df.copy() df2['E'] = ['one', 'one','two','three','four','three','five','four','three','five'] df2 df2['E'].isin(['one','four']) df2[df2['E'].isin(['one','four'])]
增 Create
s1 = pd.Series([1,2,3,4,5,6], index=pd.date_range('20130102', periods=6)) s1 #新增一列数据 df2['F'] = s1 df2
改 Update
#更新一列值 df2.loc[:,'D'] df2.loc[:,'D'] = 5 df2 df2.iloc[1,3] df2.iloc[1,3] = 10.1 df2 #通过where更新 df3 = df.copy() df3[df3 > 0] = -df3 df3