여러 인덱스로 pandas.read_csv
열을 필터링 usecols
하고 사용할 때 올바르게 들어오지 않는 csv 파일이 있습니다.
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',
header=0,
names=["dummy", "date", "loc", "x"],
index_col=["date", "loc"],
usecols=["dummy", "date", "loc", "x"],
parse_dates=["date"])
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
df1과 df2는 누락 된 더미 열을 제외하고는 동일해야하지만 열에 레이블이 잘못 지정되어 있어야합니다. 또한 날짜는 날짜로 구문 분석됩니다.
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
이름 대신 열 번호를 사용하면 동일한 문제가 발생합니다. read_csv 단계 후에 더미 열을 삭제하여 문제를 해결할 수 있지만 무엇이 잘못되었는지 이해하려고합니다. pandas 0.10.1을 사용하고 있습니다.
편집 : 잘못된 헤더 사용 수정.
header
및names
키워드 의 사용법이 올바르지 않습니다 (이 때문에 첫 번째 행이 예제에서 누락되었습니다.header
헤더가있는 행으로 int (기본값 0)을 예상합니다. 1로 해석되는 'True'를 제공하기 때문에, 두 번째 행 (첫 번째 데이터 행)이 헤더로 사용되고 누락되었습니다. 그러나 열 이름은names
인수로 덮어 쓰기 때문에 정확합니다 . 그러나 기본적으로 두 행을 그대로두고 첫 번째 행이 열 이름으로 사용됩니다. 그러나, 초기 문제가 해결되지 않습니다.