处理Pandas数据框架中的行和列问题,一般包括以下几个方面:
- 选取指定的行和列
- 增加和删除行和列
- 重命名行和列
- 修改数据框架中的数据
下面我们将分别对这几个问题做出详细的解释,并提供相关的实例。
1. 选取指定的行和列
在选取行和列的时候,我们需要使用如下的语法:
df.loc[index, column]
其中,index
代表行,column
代表列。下面是一些示例:
1.1 选取指定的列
选取列有两种方式:通过列名或列索引。例如:
import pandas as pd
# 创建数据框架
df = pd.DataFrame({'name': ['Alex', 'Bob', 'Charlie'],
'age': [25, 30, 35],
'sex': ['M', 'M', 'F']})
# 选取单列
print(df['name'])
print(df.age)
# 选取多列
print(df[['name', 'age']])
上述代码会输出:
0 Alex
1 Bob
2 Charlie
Name: name, dtype: object
0 25
1 30
2 35
Name: age, dtype: int64
name age
0 Alex 25
1 Bob 30
2 Charlie 35
1.2 选取指定的行
选取行同样也有两种方式:通过行索引或者通过布尔型索引。例如:
# 选取单行
print(df.loc[0])
# 选取多行
print(df.loc[[0, 1]])
# 使用布尔型索引选取行
print(df[df['age'] >= 30])
上述代码会输出:
name Alex
age 25
sex M
Name: 0, dtype: object
name age sex
0 Alex 25 M
1 Bob 30 M
name age sex
1 Bob 30 M
2 Charlie 35 F
1.3 选取指定的行和列
如果要选取指定的行和列,既可以混用布尔型索引和列名/列索引,也可以直接使用loc
。例如:
# 指定行和列
print(df.loc[[0, 2], ['name', 'age']])
# 通过布尔型索引同时选取行和列
print(df[df['age'] >= 30][['name', 'age']])
上述代码会输出:
name age
0 Alex 25
2 Charlie 35
name age
1 Bob 30
2 Charlie 35
2. 增加和删除行和列
增加和删除行和列都是使用df.drop()
和df.insert()
方法完成的。下面是一些示例:
2.1 删除行和列
# 删除指定行
df.drop(1, axis=0, inplace=True)
# 删除指定列
df.drop('sex', axis=1, inplace=True)
上述代码中,inplace=True
表示直接在原数据框架上进行操作。
2.2 增加行和列
# 增加一列age2
df.insert(2, 'age2', [30, 35, 40])
# 增加一行数据
new_data = {'name': 'Dan', 'age': 25, 'age2': 30}
df = df.append(new_data, ignore_index=True)
上述代码中,df.insert(2, 'age2', [30, 35, 40])
表示在第3列(索引为2)增加了一列名为age2
,数据分别为30
、35
、40
;df.append(new_data, ignore_index=True)
表示在数据框架最后增加了一行数据,ignore_index=True
表示重新为索引编号。
3. 重命名行和列
重命名行和列的方法分别为df.rename()
和df.columns = new_columns
。例如:
# 重命名列
df.rename(columns={'name': 'Name', 'age': 'Age1', 'age2': 'Age2'}, inplace=True)
# 重命名行
df.rename(index={0: 'One', 1: 'Two', 2: 'Three', 3:'Four'}, inplace=True)
上述代码中,inplace=True
表示直接在原数据框架上进行操作。
4. 修改数据框架中的数据
修改数据框架中的数据的方法比较简单,只需要直接在df
中指定行和列,再赋上新的值即可。例如:
# 修改第一行第二列数据
df.loc[0, 'Age1'] = 26
# 修改第三行所有列数据
df.loc[2] = ['Charlie2', 36, 41]
上述代码中,df.loc[0, 'Age1'] = 26
表示修改了第一行第二列的数据为26
;df.loc[2] = ['Charlie2', 36, 41]
表示修改了第三行所有列的数据为['Charlie2', 36, 41]
。
希望这个攻略对您有所帮助。