这是在读取.csv
个文件的情况下进行的.我希望有一组"必需"列,pandas将读取和解析,以及一组"可选"列,如果pandas在.csv
文件中,它将提取,否则它将不会提取(我在许多不同的.csv
文件中循环,只想获得满足这些标准的文件).
假设我有以下数据:
required_col1 | required_col2 | optional_col1 | optional_col2 | |
---|---|---|---|---|
0 | 1 | 4 | a | d |
1 | 2 | 5 | b | e |
2 | 3 | 6 | c | f |
我希望pandas要求一个数据集有required_col1
required_col2
个,如果数据集中有optional_col1
个,请阅读它,如果没有,请不要提出错误,然后继续;optional_col2
应该是一样的.但是,如果所需的列不在数据集中,我希望pandas提出一个错误.
我try 使用lambda
函数:
columnsList = ['required_col1', 'required_col2', 'optional_col1', 'optional_col2']
data = pd.read_csv('file.csv', usecols=lambda x: x in columnsList)
但是,这不起作用,因为它将all个列表值视为可选值-因此,如果数据集具有"optional\u col1"和"required\u col2",它仍然会运行而不会引发错误(即使数据中没有"require\u col 1").
我甚至试过:
optionalList = ['optional_col1', 'optional_col2']
columnsList = ['required_col1', 'required_col2', lambda x: x in optionalList]
data = pd.read_csv('file.csv', usecols=columnsList)
但是,我甚至不知道这在Python级别上是否有意义,因为我不确定在运行时是否会访问lambda函数(我try 时没有).
有没有什么方法可以让pandas提取可选列(如果有的话),但也有一组列,它应该从数据集中提取?谢谢你-我感谢所有的帮助!