2017-02-09 80 views
1

由於usecols的列和列表不同,它吐出錯誤熊貓 - Usecols當列在CSV存在

「ValueError異常」 Usecols不匹配的名字。

如何在csv中存在列時'usecol'?

CSV樣本:

df.csv 

AB,CD,EF,GH 
foo,20160101,a,1 
foo,20160102,a,3 
foo,20160103,a,5 

閱讀CSV:

import pandas as pd 


df = pd.read_csv('df.csv', 
    header=0,usecols=["AB", "CD", "IJ"]) 

這是我想要得到什麼:

df 

date  AB CD 
2016-01-01 a 1 
2016-01-02 a 3 
2016-01-03 a 5 

忽略 「IJ」。

+0

爲什麼你' 「IJ」'詮釋,他的'usecols'列表?把它拿出來。 – piRSquared

+0

這只是一個示例,我使用的df有數百個列。當我read_csv時,csv中的列被黑盒子化。 – Lcy

+0

,你想要的是'usecols'和csv中的內容相交的列嗎? – piRSquared

回答

1

進口csv正常

import pandas as pd 
from io import StringIO 

txt = """AB,CD,EF,GH 
foo,20160101,a,1 
foo,20160102,a,3 
foo,20160103,a,5""" 

df = pd.read_csv(StringIO(txt)) 

print(df) 

    AB  CD EF GH 
0 foo 20160101 a 1 
1 foo 20160102 a 3 
2 foo 20160103 a 5 

reindexintersection

usecols = ['AB', 'CD', 'IJ'] 
df.reindex_axis(df.columns.intersection(usecols), 1) 

    AB  CD 
0 foo 20160101 
1 foo 20160102 
2 foo 20160103 

​