2017-02-09 81 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 

​