如何对整个Pandas MultiIndex进行字符串操作?

问题描述 投票:0回答:1

我有一个带有两级列索引的 pandas 数据框。 它是从电子表格中读取的,其中作者使用了大量空格来完成对齐等操作(例如,一列称为

'Tank                             #'
)。

我已经能够单独删除各个级别上的空白...

level0 = raw.columns.levels[0].str.replace('\s', '', regex=True)
level1 = raw.columns.levels[1].str.replace('\s', '', regex=True)
raw.columns.set_levels([level0, level1], inplace=True)

...但我很好奇是否有一种方法可以做到这一点,而不必一次更改每个单独的级别。

我试过了

raw.columns.set_levels(raw.columns.str.replace('\s', '', regex=True)
但得到了
AttributeError: Can only use .str accessor with Index, not MultiIndex

这是数据的一个小样本子集——我对 SO 表格式的最佳尝试:D,后面是一张图片,其中我用黄色突出显示了收到的索引。

运行信息 运行信息 运行数据 运行数据
运行# 坦克# 步骤A 浓。 %
ph
0 6931 5 5.29 33.14
1 6932 1 5.28 33.13
2 6933 2 5.32 33.40
3 6934 3 5.19 32.98

sample data

感谢您的见解!

编辑:添加 to_dict()

df.to_dict()
Out[5]: 
{'Unnamed: 0': {0: nan, 1: 0.0, 2: 1.0, 3: 2.0, 4: 3.0, 5: 4.0},
 'Run Info': {0: 'run #',
  1: '6931',
  2: '6932',
  3: '6933',
  4: '6934',
  5: '6935'},
 'Run Info.1': {0: 'Tank                             #',
  1: '5',
  2: '1',
  3: '2',
  4: '3',
  5: '4'},
 'Run Data': {0: 'Step A\npH',
  1: '5.29',
  2: '5.28',
  3: '5.32',
  4: '5.19',
  5: '5.28'},
 'Run Data.1': {0: 'concentration',
  1: '33.14',
  2: '33.13',
  3: '33.4',
  4: '32.98',
  5: '32.7'}}
python pandas multi-index
1个回答
4
投票

怎么样

rename
:

import re

df.rename(columns=lambda x: re.sub('\s+', ' ', x.strip()), inplace=True)

如果您不想保留任何空格,可以将

' '
替换为
''

© www.soinside.com 2019 - 2024. All rights reserved.