我正在尝试重新构造一个表,现在它的格式大致符合要求
我最终得到了一个多索引表,我想将其转换为单索引,并有以下列
| | 'SourceID' | 'P1_VAL_1' | 'P2_VAL_1' | 'P3_VAL_1' | 'P4_VAL_1' | 'P1_VAL_2' | 'P2_VAL_2' | 'P3_VAL_2' | 'P4_VAL_2' |
我不知道如何组合索引级别
例子:import pandas as pd
d = {'SourceID': [1, 1, 1, 1, 2, 2, 2],
'FieldName': ["P1", "P2", "P3", "P4", "P1", "P2", "P3"],
'VAL_1': [100, 200, 300, 400 , 500, 600, 700],
'VAL_2': [1000, 2000, 3000, 4000, 5000, 6000, 7000],}
df = pd.DataFrame(data=d)
gby_temp = df.groupby(['SourceID', 'FieldName']).mean().unstack('FieldName')
L = [(a, f'{b}_{a}') for a, b in gby_temp.columns]
gby_temp.columns = pd.MultiIndex.from_tuples(L)
gby_temp = gby_temp.reset_index()
gby_temp.set_index('SourceID')
gby_temp = gby_temp.reindex(sorted(gby_temp.columns), axis=1)
display(gby_temp)
电流输出
| | ('SourceID', '') | ('VAL_1', 'P1_VAL_1') | ('VAL_1', 'P2_VAL_1') | ('VAL_1', 'P3_VAL_1') | ('VAL_1', 'P4_VAL_1') | ('VAL_2', 'P1_VAL_2') | ('VAL_2', 'P2_VAL_2') | ('VAL_2', 'P3_VAL_2') | ('VAL_2', 'P4_VAL_2') |
|---:|-------------------:|------------------------:|------------------------:|------------------------:|------------------------:|------------------------:|------------------------:|------------------------:|------------------------:|
| 0 | 1 | 100 | 200 | 300 | 400 | 1000 | 2000 | 3000 | 4000 |
| 1 | 2 | 500 | 600 | 700 | nan | 5000 | 6000 | 7000 | nan |
原始表格
| | SourceID | FieldName | VAL_1 | VAL_2 |
| ---- | -------- | --------- | ----- | ----- |
| 0 | 1 | P1 | 100 | 1000 |
| 1 | 1 | P2 | 200 | 2000 |
| 2 | 1 | P3 | 300 | 3000 |
| 3 | 1 | P4 | 400 | 4000 |
| 4 | 2 | P1 | 500 | 5000 |
| 5 | 2 | P2 | 600 | 6000 |
| 6 | 2 | P3 | 700 | 7000 |
我认为您的解决方案应该简化,因为不需要新的
MultiIndex
,而是在unstack
之后连接列名称的值:相关问题 更多 >
编程相关推荐