Pandas - 当 csv 中存在列时使用列

Lcy*_*Lcy 3 python csv pandas

由于 usecols 的列和列表不同,因此会吐出错误

“ValueError”Usecols 与名称不匹配。

如果 csv 中存在列,我如何“usecol”?

csv样本:

df.csv

AB,CD,EF,GH
foo,20160101,a,1
foo,20160102,a,3
foo,20160103,a,5
Run Code Online (Sandbox Code Playgroud)

读取csv:

import pandas as pd


df = pd.read_csv('df.csv', 
    header=0,usecols=["AB", "CD", "IJ"])
Run Code Online (Sandbox Code Playgroud)

这就是我想得到的:

df

date       AB   CD
2016-01-01  a    1
2016-01-02  a    3
2016-01-03  a    5
Run Code Online (Sandbox Code Playgroud)

忽略“IJ”。

Ale*_*lex 5

使用lambdainusecols跳过不在 中的列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"""

usecols = ['AB', 'CD', 'IJ']

df = pd.read_csv(StringIO(txt), usecols=lambda c: c in set(usecols))

print(df)

    AB        CD
0  foo  20160101
1  foo  20160102
2  foo  20160103
Run Code Online (Sandbox Code Playgroud)