Панды тянут не ту колонну - PullRequest
0 голосов
/ 23 октября 2018

У меня есть CSV, который структурирован как:

_________________________
|foo  | bar |     |     |
|     |need |bleep|bloop|
|     |this |bleep|bloop|

Я пытаюсь извлечь значения из столбца 'bar', но все, что я получаю, это 'bloop'.

Вот как я пытаюсь получить «потребность»:

df = pd.read_csv('PATH\TO\FILE')
value = df.iloc[1]['bar']
print(value)

>bloop

Я не могу понять, почему я просто получаю «bloop» вместо «потребность».Я также пытался использовать:

df.iloc[:,1]

, чтобы получить второй столбец, но ничего не делал.

Редактировать: вот формат первых нескольких строк CSV, которые должны были измениться из-за конфиденциальной информации.

foo,bar
,need,bleep,bloop
,need,"some stuff, and, more, other, blah stuff, stuff",bloop
,need,"pretty, much, the, same stuff",bloop 

Ответы [ 2 ]

0 голосов
/ 23 октября 2018

Проблема в том, что в строке заголовка недостаточно полей.По этой причине pandas предполагает, что первые два столбца являются индексом, и предоставляет вам два столбца foo и bar, что позволяет ему правильно проанализировать файл и избежать ошибок такого типа:

df = pd.read_csv('test.csv', header=None)

ParserError: Ошибка токенизации данных.Ошибка C: Ожидается 2 поля в строке 2, пила 4

Поскольку иногда бывает сложно изменить базовые данные, просто пропустите первую строку и установите имена столбцов вручную.

df = pd.read_csv('test.csv', skiprows=1)
df.columns=['foo', 'bar', 0, 1]

Вывод:

   foo   bar                                                0       1
0  NaN  need  some stuff, and, more, other, blah stuff, stuff   bloop
1  NaN  need                    pretty, much, the, same stuff  bloop 
0 голосов
/ 23 октября 2018

Откройте файл CSV.Измените заголовок с:

foo,bar

на:

foo,bar,,

Затем повторите код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...