Pandas DataFrame对象行列操作
Pandas 的数据框可以看作是 Numpy 中的二维数组。
声明:《Python系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。
1. DataFrame对象行操作
1) loc与iloc区别注意
行操作与 Numpy 二维数组的方法类似,特别要注意的是 loc 和 iloc 的区别。示例代码如下。In [1]: import pandas as pd In [2]: df = pd.DataFrame({'a': [1, 2, 3], 'b': ['a', 'b', 'c'],'c': ["A","B","C"]}) ...: df Out[2]: a b c 0 1 a A 1 2 b B 2 3 c C In [3]: df.loc[1,:] # 选择标签为1的行数据 Out[3]: a 2 b b c B Name: 1, dtype: object In [4]: df.loc[1:2,:] # 选择标签为1、2的行数据 Out[4]: a b c 1 2 b B 2 3 c C In [5]: df.iloc[1:2,:] # 注意当使用iloc时,只返回标签为1的行数据 Out[5]: a b c 1 2 b B
2)DataFrame对象倒序操作
这里的倒序方法和 Python 中自带的 list 的索引方法相同,可以设置起始点和终止点以及步长。Python 的特点就是可以将步长设为-1,这样就是倒序的索引了。In [6]: df.loc[::-1,:] # 选择所有行,步长为-1,所以为倒序 Out[6]: a b c 2 3 c C 1 2 b B 0 1 a A In [7]: df.loc[0:2:2,:] # 选择0至2行,步长为2 Out[7]: a b c 0 1 a A 2 3 c C
3) 选择符合条件的值
我们经常在操作数据框的时候选择某些符合条件的值,在 DataFrame 中这样的操作可以简化为两个步骤。- 第一步:获得符合条件的元素的索引。
- 第二步:使用该索引对数据框中的元素进行索引。
In [8]: select = df.loc[:,"a"] >= 2 # 条件筛选,选择"a"列中大于2的元素 ...: df.loc[select,:] Out[8]: a b c 1 2 b B 2 3 c C
4) DataFrame对象增加行
我们可以通过直接赋值的方法来增加行。In [9]: df.loc[3,:]=4 # 增加行 In [10]: df.loc[[1,2],:]=df.loc[[2,1],:].values # 注意一定要带.values ...: df Out[10]: a b c 0 1.0 a A 1 3.0 c C 2 2.0 b B 3 4.0 4 4 In [11]: df.drop(0,axis=0,inplace=True) # 删除行 ...: df Out[11]: a b c 1 3.0 c C 2 2.0 b B 3 4.0 4 4
2. DataFrame对象列操作
DataFrame 对行的操作和对列的操作基本相同,不过要注意的是交换列的方法要使用 .values 来获取数值,否则会失败。示例代码如下。In [1]: import pandas as pd In [2]: df = pd.DataFrame({'a': [1, 2, 3], 'b': ['a', 'b', 'c'],'c': ["A","B","C"]}) ...: df Out[2]: a b c 0 1 a A 1 2 b B 2 3 c C In [3]: df.loc[:,"a"] # 选择'a'列 Out[3]: 0 1 1 2 2 3 Name: a, dtype: int64 In [4]: df.loc[:,"a":"b"] # 选择多列 Out[4]: a b 0 1 a 1 2 b 2 3 c In [5]: df.loc[:,"d"]=4 # 添加列 In [6]: df.loc[:,['b', 'a']] = df.loc[:,['a', 'b']].values # 交换两列的值,注意一定 #使用.values ...: df Out[6]: a b c d 0 a 1 A 4 1 b 2 B 4 2 c 3 C 4 In [7]: df.rename(columns={'b':'第二列'}, inplace=True) # 替换指定的列名 ...: df Out[7]: a 第二列 c d 0 a 1 A 4 1 b 2 B 4 1 b 2 B 4 2 c 3 C 4 In [8]: df.columns = df.columns.map(lambda x:x.upper()) # 全部大写 ...: df Out[8]: A 第二列 C D 0 a 1 A 4 1 b 2 B 4 2 c 3 C 4 In [9]: del df['A'] # 删除列 ...: df Out[9]: 第二列 C D 0 1 A 4 1 2 B 4 2 3 C 4
声明:《Python系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。