忽略“usecol”参数中缺少的列

tri*_*ook 2 python pandas

我正在从 csv 读取表格,并且只想要列的子集。我用于子集的列表包含我正在阅读的表中可能不存在的字段名称。例如:

# contents of sample.csv:
#a,b,c
#1,2,3
#4,5,6

subset = ['a', 'c', 'd']
Run Code Online (Sandbox Code Playgroud)

我想使用 pandas.read_csv 和子集返回以下内容,但这会引发错误:

pd.read_csv(sample.csv, usecols=subset)
a  c
1  3
4  6

ValueError: Usecols do not match columns, columns expected but not found: ['d']
Run Code Online (Sandbox Code Playgroud)

我想我可能可以使用 usecols 的可调用值,但我不确定如何实现。

ALo*_*llz 6

使用可调用检查列是否in为子集

subset = ['a', 'c', 'd']
df = pd.read_csv('sample.csv', usecols=lambda x: x in subset)

   a  c
0  1  3
1  4  6
Run Code Online (Sandbox Code Playgroud)