[英]set index and Read Multi-index on columns from csv
我有一个.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?
您可以阅读第一行,提取列名称,并将此信息提供给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
您可以显式传递要使用的列名,并跳过标题行:
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.