繁体   English   中英

在csv中的列上设置索引和读取多索引

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM