选择
1. 根据列名选择
>>> df['A']
选择df中名称为'A'的列,该操作产生一个Series,等同于df.A。
2. 根据行号选择
>>> df[0 : 3]
选择df中第0到第2行,该操作产生一个DataFrame。
3. 根据索引选择
>>> df['20130102' : '20130104']
选择索引为'20130102'、'20130103'、'20130104'的行,这些索引对应的类型是DatetimeIndex。
4. 根据索引、列名共同选择
- 一个索引的情况
>>> df.loc[index]
>>> df.loc[index, 'A']
>>> df.at[index, 'A'] # 比df.loc[index, 'A']更快
>>> df.loc[index, ['A', 'B']]
- 多个索引的情况
>>> df.loc[index1 : index2] # index1和index2的类型要与df的索引类型一致。
>>> df.loc[index1 : index2, 'A']
>>> df.loc[index1 : index2, ['A','B']]
5. 根据位置选择
- 选择某一行
>>> df.iloc[1] # 选择第1行,注:df从第0行开始编号
- 选择某一列
>>> df.iloc[:, 1] # 选择第1列,注:df从第0列开始编号
- 选择某行、某列的那个元素
>>> df.iloc[1, 1] # 选择第1行第1列的那个元素
>>> df.iat[1, 1] # 同上,但速度更快
- 选择某些行、某些列
>>> df.iloc[3:5, 0:2]
>>> df.iloc[[1,2,4], [0, 2]]
>>> df.iloc[1:3, :]
>>> df.iloc[:, 1:3]
6. 根据条件选择
>>> df[df.A > 0] # 返回df中'A'列大于0的行
>>> df[df > 0] # 返回一个与df相同大小的df2,保留原df中大于0的元素,并将原df中小于等于0的元素置为NaN
赋值
>>> df['A'] = s1 # s1是一个Series
>>> df.at[index, ‘A’] = 0
>>> df.iat[0, 1] = 0
>>> df.loc[:, 'A'] = np.array([5] * len(df))
>>> df[df > 0] = df2 # 将df中大于0的元素置为df2中对应的元素