Python: фрейм данных pandas и значение {Series}0 в отладчике

Я использую панды в Python 2.7 и читаю CSV-файл следующим образом:

import pandas as pd

df = pd.read_csv("test_file.csv")

DF имеет столбец с названием ratingи столбец под названием "обзор", я делаю некоторые манипуляции на df например:

df3 = df[df['rating'] != 3]

Теперь, если я посмотрю в отладчике на df['review'] а также df3['review'] Я вижу эту информацию:

df['review'] = {Series}0
df3['review'] = {Series}1

Также, если я хочу увидеть первый элемент df['review'] Я использую:

df['review'][0]

что хорошо, но если я сделаю то же самое для df3Я получаю эту ошибку:

df3['review'][0]
{KeyError}0L

Тем не менее, похоже, что я могу сделать это:

df3['review'][1]

Может кто-нибудь объяснить, пожалуйста, разницу?

1 ответ

Решение

Индексирование с целым числом в Серии не работает как список. Особенно, df['review'][0] не получает первый элемент столбца "обзор", он получает элемент с индексом 0:

In [4]: s = pd.Series(['a', 'b', 'c', 'd'], index=[1, 0, 2, 3])

In [5]: s
Out[5]:
1    a
0    b
2    c
3    d
dtype: object

In [6]: s[0]
Out[6]: 'b'

Предположительно, в генерации df3 вы удалили строку с индексом 0. Если вы действительно хотите получить первый элемент независимо от индекса, используйте iloc:

In [7]: s.iloc[0]
Out[7]: 'a'
Другие вопросы по тегам