DataFrame查增改删
查 Read
类list/ndarray数据访问方式
dates = pd.date_range('',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('', 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