Mam plik CSV, który nie jest poprawnie wyświetlany z pandas.read_csv
, gdy filtruję kolumny przy użyciu usecols
i używam wielu indeksów.
pandy read_csv i kolumny filtrów z plikami użytkowymi
import pandas as pd
csv = r"""dummy,date,loc,x
bar,20090101,a,1
bar,20090102,a,3
bar,20090103,a,5
bar,20090101,b,1
bar,20090102,b,3
bar,20090103,b,5"""
f = open('foo.csv', 'w')
f.write(csv)
f.close()
df1 = pd.read_csv('foo.csv',
index_col=["date", "loc"],
usecols=["dummy", "date", "loc", "x"],
parse_dates=["date"],
header=0,
names=["dummy", "date", "loc", "x"])
print df1
# Ignore the dummy columns
df2 = pd.read_csv('foo.csv',
index_col=["date", "loc"],
usecols=["date", "loc", "x"], # <----------- Changed
parse_dates=["date"],
header=0,
names=["dummy", "date", "loc", "x"])
print df2
Spodziewam się, że DF1 i df2 powinna być taka sama, z wyjątkiem brakującej manekina kolumny, ale kolumny przyjść błędnie. Również data jest przetwarzana jako data.
In [118]: %run test.py
dummy x
date loc
2009-01-01 a bar 1
2009-01-02 a bar 3
2009-01-03 a bar 5
2009-01-01 b bar 1
2009-01-02 b bar 3
2009-01-03 b bar 5
date
date loc
a 1 20090101
3 20090102
5 20090103
b 1 20090101
3 20090102
5 20090103
Używanie numerów kolumn zamiast nazw daje mi ten sam problem. Mogę obejść ten problem, upuszczając kolumnę manekinową po kroku read_csv, ale próbuję zrozumieć, co jest nie tak. Używam pand 0.10.1.
edit: poprawiono złe użycie nagłówka.
coś innego, swój korzystanie z 'header' i' names' słowo nie jest prawidłowe (dlatego w twoim przykładzie brakuje pierwszego wiersza. 'header' oczekuje wartości int (domyślnie 0) jako wiersza z nagłówkiem, ponieważ podajesz" True ", który jest interpretowany jako 1, drugi wiersz (pierwszy wiersz danych) jest używany jako nagłówek i brakuje. Jednak nazwy kolumn są poprawne, ponieważ nadpisujesz go argumentem "names". Ale możesz je zostawić, a pierwszy wiersz jest domyślnie używany dla nazw kolumn. Jednak to nie rozwiązuje początkowego pytania. – joris
Wygląda to na błąd 'usecols'. Prawdopodobnie związane z [bug 2654] (https://github.com/pydata/pandas/issues/2654)? – abudis
Błąd nadal istnieje bez nazw i argumentów nagłówka, dobre znalezisko. –