这是一个示例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
我的目标是删除所有标头为空的列,在本例中为第二列,但是我无法使用熊猫分配的列名来过滤它们,因为可能还有以{{1}开头的非空列},如示例中的第三列。
列是未知的,因此我无法对其进行任何控制。
我用Unnamed
尝试了以下args,但是没有运气:
read_csv
:它根本不起作用!prefix
:将空标头传递给usecols
时已经有了一个名称,这使它对我不可用。我已经查看了SO的其他一些答案,例如以下答案,但没有一个涵盖我的情况:
答案 0 :(得分:2)
我能想到的唯一方法是事先“窥视”标头并获取非空标头的索引。那么就不是删除它们的情况,而是不将它们包括在原始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)
答案 1 :(得分:0)