Разница в сериях Pandas между доступом к значениям с помощью строки и вложенного списка - PullRequest
0 голосов
/ 01 января 2019

Привет, я все еще новичок в методе pandas, и я просто хочу лучше понять 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 голосов
/ 01 января 2019

Когда вы используете:

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
0 голосов
/ 01 января 2019

Когда вы делаете 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).Для второго случая тип результата - Сериал.

...