Pandas多索引到CSV没有重复索引

2024-04-28 13:20:07 发布

您现在位置:Python中文网/ 问答频道 /正文

当我写了一个多重索引时,我不能删除我的多重索引。虽然有这个answer,但它本身并不适用于我,因为我的第二个级别有所有不同的值。在

这是我所拥有的数据帧的一部分,只是每个月都在继续

Month Measure
JAN   KWH          
      Max KW       
      Day/Hour     
      Peak End Use 
      Peak Pct     
FEB   KWH          
      Max KW       
      Day/Hour     
      Peak End Use 
      Peak Pct     

但在CSV中它看起来像

^{pr2}$

我希望它看起来和数据帧完全一样,这意味着在CSV中它看起来像

Jan,KWH
   ,Max KW
   ,Day/Hour

and so on

我尝试过df.index.to_series().duplicates(),但是没有用,因为我的每个索引对都不是重复的。我还尝试过使用index.tolist()然后循环进行更改,但没有成功。在

正确的方法是什么?在

提前谢谢!在


Tags: csv数据answerindexuse级别maxend
1条回答
网友
1楼 · 发布于 2024-04-28 13:20:07

似乎pandas并没有直接提供这样的功能,也许是为了确保生成的csv文件可以被读回,如上面的评论所述。在为rst格式的报表生成表时,我也遇到了同样的问题。最后,我决定用一个外部脚本处理生成的csv。script将列中的重复值替换为空格,从而获得所需的结果。注意:此脚本假定逗号为csv分隔符。在

# Clean csv with multiindices
from sys import argv

# Positional command line arguments:
#   1: original csv file
#   2: number of columns to check (optional)

with open(argv[1], 'r') as f:
  if len(argv) > 2:
    n = int(argv[2])
    i0 = ('', ) * n
  else:
    n = None
    i0 = None
  for l in f:
    if n is None:
        # define n from the 1-st line
        i1 = l.split(',')
        n = len(i1)
        i0 = ('', ) * n
    i1 = l.split(',', n)
    nl = ()
    for s0, s1 in zip(i0, i1):
        if s0 == s1:
            e = ' ' * len(s0)
        else:
            e = s1
        nl += (e, )
    nl += tuple(i1[n:])
    print ','.join(nl),
    i0 = i1[:n]

相关问题 更多 >