我有一个已知列的输入文件,比如两列Name
和Sex
,有时它有标题行Name,Sex
,有时没有:
1.csv格式:
Name,Sex
John,M
Leslie,F
2.csv格式:
John,M
Leslie,F
事先知道列的标识,有没有一种好方法可以用同一个read_csv
命令处理这两种情况?基本上,我想指定names=['Name', 'Sex']
,然后让它只在头存在时才推断header=0
。
- 1)在执行
read_csv
之前读取文件的第一行,并适当地设置参数。 - 2)只执行
df = pd.read_csv(input_file, names=['Name', 'Sex'])
,然后检查第0行是否与标题相同,如果相同,则删除它(然后可能需要重新编号行)。
但是在我看来,这并不像是一个不寻常的用例,是否有一种我没有想到的内置的read_csv
方法?
2条答案
按热度按时间ar7v8xwq1#
使用新功能-可调用项选择:
使用.query()方法:
我不确定这是不是最优雅的方式,但这应该也行:
dbf7pr2w2#
我提出了一种无需事先知道头文件名称即可检测头文件的方法:
并且通过稍微改变它,它可以用检测到的报头更新当前报头:
这将允许容易地选择期望的行为:
优点:
缺点:
if any()
以要求所有元素都是字符串可能会有所帮助,除非数据中也包含整行字符串。