第一个是这样的:
F2 | F1 | F3 | F4 | F5 | |
---|---|---|---|---|---|
2019 | 8 | 1 | 3 | 4 | 6 |
2020 | 9 | 1 | 3 | 6 | 1 |
2021 | 10 | 2 | 4 | 5 | 1 |
第二个这样
ID | 资产 | |
---|---|---|
0 | F1 | carac3 |
1 | F2 | carac1 |
2 | F3 | carac1 |
3 | F4 | carac2 |
4 | F5 | carac2 |
我想获得一个 multiliindex 列数据框:
F2 | F1 | F3 | F4 | F5 | |
---|---|---|---|---|---|
carac1 | carac3 | carac1 | carac2 | carac2 | |
2019 | 8 | 1 | 3 | 4 | 6 |
2020 | 9 | 1 | 3 | 6 | 1 |
2021 | 10 | 2 | 4 | 5 | 1 |
谢谢
df1.columns = pd.MultiIndex.from_tuples(zip(df1.columns, df1.columns.map(df2.set_index('ID')['ASSET'])))
print(df1)
F2 F1 F3 F4 F5
carac1 carac3 carac1 carac2 carac2
2019 8 1 3 4 6
2020 9 1 3 6 1
2021 10 2 4 5 1
如果两个 DataFrame 之间的值匹配:
df1.columns = pd.MultiIndex.from_frame(df2)
print (df1)
ID F1 F2 F3 F4 F5
ASSET carac3 carac1 carac1 carac2 carac2
2019 8 1 3 4 6
2020 9 1 3 6 1
2021 10 2 4 5 1
如果需要匹配值:
df1.columns = pd.MultiIndex.from_frame(df1.columns.to_frame(name='ID').merge(df2, how='left'))
print (df1)
ID F2 F1 F3 F4 F5
ASSET carac1 carac3 carac1 carac2 carac2
2019 8 1 3 4 6
2020 9 1 3 6 1
2021 10 2 4 5 1