我的.csv看起来像是:
SiteCode,('Max_Area',1), ('Max_Vol',1)
0003L,3037.1875,13390.319488525391
0009L,7719.25,476.31626510620117
第一列是所需的索引,后面的元组是我想要的列名。当我读取csv之类的时候:
df = pd.read_csv("file.csv",index_col=0)
我得到的数据框如下:
(Max_Area 1) (Max_Vol 1)
SiteCode
0003L 3037.1875 13390.319489 NaN NaN
0009L 7719.2500 476.316265 NaN NaN
我想要一个看起来像这样的数据框:
SiteCode (Max_Area,1) (Max_Vol,1)
0003L 3037.1875 13390.319489
0009L 7719.2500 476.316265
是否可以读取以逗号分隔的元组作为标题的csv?
答案 0 :(得分:0)
您可以阅读第一行,提取列名并将此信息提供给csv阅读器:
import pandas as pd
import re
with open("test.txt", "r") as f:
header = f.readline()[:-1]
pattern = re.compile(r"(?:[^,(]|\([^)]*\))+")
df = pd.read_csv("test.txt", names = pattern.findall(header), skiprows = 1)
#output
SiteCode ('Max_Area',1) ('Max_Vol',1)
0 0003L 3037.1875 13390.319489
1 0009L 7719.2500 476.316265
答案 1 :(得分:0)
您可以显式传入要使用的列名,并跳过标题行:
df = pd.read_csv("file.csv",
names=['SiteCode', '(Max_Area, 1)', '(Max_Vol, 1)'],
skiprows=1,
index_col=0)
df
(Max_Area,1) (Max_Vol,1)
SiteCode
0003L 3037.1875 13390.319489
0009L 7719.2500 476.316265