来自其他数据框的 pandas 多索引列

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

第一个是这样的:

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

谢谢

python pandas multi-index
2个回答
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

0
投票

如果两个 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
© www.soinside.com 2019 - 2024. All rights reserved.