Pandas系列使用字符串和嵌套列表访问值之间的区别

时间:2019-01-01 12:24:39

标签: python pandas series

嗨,我还是熊猫方法的新手,我只是想对pd.Series有一个更好的了解

ser = pd.Series(data=[100,"200",300,"400",500],index=["tom","bob","nancy","dan","eric"])

例如,我发现何时要使用其索引提取值

ser["nancy"]

输出将为

300

但是如果我使用嵌套列表

ser[["nancy"]]

我会得到

nancy    300

我知道这可能是一件简单的事情,但我只是想知道其背后的原因,以便更好地理解 并且如果您有任何资源,我建议我会非常感激

谢谢

2 个答案:

答案 0 :(得分:4)

使用时:

ser["nancy"]
>> 300

它返回一个整数

type(ser['nancy']
>> int

但是当您使用

ser[['nancy']]
>> nancy    300
dtype: object

它实际上返回一个序列:

type(ser[['nancy']])
>> pandas.core.series.Series

因此,当您使用列表时,它总是返回一个系列,而不仅仅是返回一个字符串时的对应值:

ser[["nancy", "dan"]]
>> nancy      300
dan    400
dtype: object

答案 1 :(得分:3)

当您执行ser["nancy"]时,您会向熊猫发出信号,表示您需要单个值,因此它将在"nancy"索引键处返回该值。当您执行ser[["nancy"]]时,您会向熊猫发出信号,您可能需要多个值,因此它将返回包含这些(可能)多个值的数据结构(在本例中为Series)。下面的示例对此进行了更好的说明:

import pandas as pd

ser = pd.Series(data=[100, "200", 300, "400", 500], index=["tom", "bob", "nancy", "dan", "eric"])

result = ser["nancy"]
print(result, type(result))

result = ser[["nancy", "dan"]]
print(result, type(result))

输出

300 <class 'int'>
nancy    300
dan      400
dtype: object <class 'pandas.core.series.Series'>

从输出中可以看到,ser["nancy"]返回ser处的"nancy"的值,在这种情况下为300,您可以通过类型进一步验证它是一个值( int)。对于第二种情况,结果类型为系列。