如何在Pandas中按名称选择列(3个例子)

442 阅读2分钟

你可以使用以下方法在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个例子