我有一个带有多索引列的数据框。列名称为:
H1 H2 H3
0 1 2 3 0 1 2 3 0 1 2 3
我想合并名称,但是level0名称为str格式,level1名称为int格式。
当我尝试加入时:
wide_df.columns = wide_df.columns.levels[1].astype(str)
wide_df.columns = ['_'.join(col) for col in wide_df.columns.values]
wide_df.columns = pd.Index(wide_df.columns)
我得到:
```ValueError: Length mismatch: Expected axis has 12 elements, new values have 4 elements```
如果我摆脱了这一行:
```wide_df.columns = wide_df.columns.levels[1].astype(str)```
然后我得到了:
```TypeError: sequence item 1: expected str instance, int found```
答案 0 :(得分:1)
您可以重新创建
s= wide_df.columns
idx=pd.MultiIndex.from_arrays([s.get_level_values(0),s.get_level_values(1).astype(str)])
wide_df.columns=idx
此外,如果您只希望将列展平
wide_df.columns = wide_df.columns.map('{0[0]}_{0[1]}'.format)