你可以使用以下方法在pandas DataFrame中按名称选择列。
方法1:按名称选择一个列
df.loc[:, 'column1']
方法2:按名称选择多列
df.loc[:, ['column1', 'column3', 'column4']]
方法3:按名称选择范围内的列
df.loc[:, 'column2':'column4']
下面的例子展示了如何在实践中使用这些方法中的每一个,即以下的pandas DataFrame:
import pandas as pd
#create DataFrame
df = pd.DataFrame({'mavs': [10, 12, 14, 15, 19, 22, 27],
'cavs': [18, 22, 19, 14, 14, 11, 20],
'hornets': [5, 7, 7, 9, 12, 9, 14],
'spurs': [10, 12, 14, 13, 13, 19, 22],
'nets': [10, 14, 25, 22, 25, 17, 12]})
#view DataFrame
print(df)
mavs cavs hornets spurs nets
0 10 18 5 10 10
1 12 22 7 12 14
2 14 19 7 14 25
3 15 14 9 13 22
4 19 14 12 13 25
5 22 11 9 19 17
6 27 20 14 22 12
例1:按名称选择一列
下面的代码显示了如何在DataFrame中选择 "spurs "列:
#select column with name 'spurs'
df.loc[:, 'spurs']
0 10
1 12
2 14
3 13
4 13
5 19
6 22
Name: spurs, dtype: int64
只返回'spurs'列的值。
例2:按名称选择多列
下面的代码显示了如何选择DataFrame中的cavs、spurs和nets列:
#select columns with names cavs, spurs, and nets
df.loc[:, ['cavs', 'spurs', 'nets']]
cavs spurs nets
0 18 10 10
1 22 12 14
2 19 14 25
3 14 13 22
4 14 13 25
5 11 19 17
6 20 22 12
只有cavs、spurs和nets列的值被返回。
例3:按名称选择范围内的列
下面的代码显示了如何选择DataFrame中名称为'hornets'和'nets'之间的所有列:
#select all columns between hornets and nets
df.loc[:, 'hornets':'nets']
hornets spurs nets
0 5 10 10
1 7 12 14
2 7 14 25
3 9 13 22
4 12 13 25
5 9 19 17
6 14 22 12
所有在 "大黄蜂 "和 "网 "之间的列都被返回。
其他资源
下面的教程解释了如何在pandas中执行其他常见任务:
Pandas:如何将列移动到数据框架的前面
Pandas:如何检查列是否包含字符串
Pandas:如何向数据框架添加空列(3个例子