Pandas中的双括号]
和单括号'
索引的区别
在本文中,我们将探讨Pandas中使用双括号]
和单括号'
索引的区别。让我们从数据框架的创建开始。
import pandas as pd
data = {'name': ['Alice', 'Bob', 'Charlie', 'David', 'Emily'],
'age': [25, 30, 35, 40, 45],
'gender': ['F', 'M', 'M', 'M', 'F']}
df = pd.DataFrame(data)
我们得到了以下数据框架:
name age gender
0 Alice 25 F
1 Bob 30 M
2 Charlie 35 M
3 David 40 M
4 Emily 45 F
现在我们可以使用两种不同的索引方法来选择数据框架中的列:
阅读更多:Pandas 教程
通过单括号’的方式索引
可以通过使用单括号'
来选择列:
name_series = df['name']
我们得到了以下name
列的序列:
0 Alice
1 Bob
2 Charlie
3 David
4 Emily
Name: name, dtype: object
请注意,返回的是 pandas.Series
类型对象,而不是 pandas.DataFrame
类型对象。
通过双括号]
的方式索引
可以通过使用双括号]
来选择列:
name_series = df[['name']]
我们得到了以下数据框架:
name
0 Alice
1 Bob
2 Charlie
3 David
4 Emily
请注意,返回的是 pandas.DataFrame
类型对象。
行索引操作
接下来我们来看行索引操作。
df = pd.DataFrame({'foo': range(5), 'bar': range(5, 10)})
我们得到了以下数据框架:
foo bar
0 0 5
1 1 6
2 2 7
3 3 8
4 4 9
通过单括号索引项:
df[2:4]
我们得到了以下数据框架:
foo bar
2 2 7
3 3 8
仔细看这行代码:
df[['foo', 'bar']][2:4]
正确答案应该是 [ ] 和 [ ] [ ] 。它们的使用方法如下:
df[['foo', 'bar']]
我们得到了以下数据框架:
foo bar
0 0 5
1 1 6
2 2 7
3 3 8
4 4 9
使用切片和列索引:
df[['foo', 'bar']][2:4]
我们得到了以下输出:
foo bar
2 2 7
3 3 8
如您所见,两个括号的方式 [[]]
在刚才的例子中是无处不在的。我们采取的方法是“ 将两种操作分组,在最后使用一个操作 ”,这在某些情况下真的很方便。
总结
在Pandas中,单括号和双括号的索引有着相似但不同的用法。使用单个括号索引会返回一个 pandas.Series
对象,使用双括号索引会返回一个 pandas.DataFrame
对象。双括号索引还可以结合切片和列名使用,这在处理数据框架时非常方便。