这是一个示例csv:
| Header A | | Unnamed: 1 | Header D |
|-----------|------|------------|-----------|
| a1 | b1 | c1 | d1 |
| a2 | b2 | c2 | d2 |
如果我用pandas.read_csv
导入它,它会变成这样:
Header A Unnamed: 1 Unnamed: 1.1 Header D
0 a1 b1 c1 d1
1 a2 b2 c2 d2
我的目标是删除所有带有空标题的列,在本例中是第二列,但我不能使用pandas指定的列名来过滤它们,因为可能还有非空列以Unnamed
开头,就像第三列一样这个例子。
列之前是未知的,所以我无法控制它们。
我用read_csv
尝试了下面的args,但是没有运气呢:
prefix
:它只是不起作用!usecols
:空标题在传递给usecols
时已经有了一个名字,这使我无法使用它。我已经在SO上查看了其他一些答案,如下所示,但没有一个涵盖我的案例:
我能想到的唯一方法是事先“查看”标题并获取非空标题的索引。然后它不是丢弃它们的情况,而是不包括它们在原始df中。
import csv
import pandas as pd
with open('test.csv') as infile:
reader = csv.reader(infile)
headers = next(reader)
header_indices = [i for i, item in enumerate(headers) if item]
df = pd.read_csv('test.csv', usecols=header_indices)