我有以下数据df_matrix
、level_1
和level_2
是多索引:
|level_1|level_2|value_1|value_2|value_3|
|-------|-------|-------|-------|-------|
|a |w |1 |2 |3 |
| |y |4 |5 |6 |
| |y |4 |5 |6 |
| |z |7 |8 |9 |
|b |w |11 |21 |31 |
| |x |41 |51 |61 |
| |y |41 |51 |61 |
| |z |71 |81 |91 |
并且df_column
、id
是索引:
id | 值 |
---|---|
值_1 | 0.1 |
值_2 | 0.2 |
值_3 | 0.3 |
您可以直接使用点函数;它将在共同索引上对齐;在那之后,它是一个简单的拆堆、droplevel和重命名。
(
df_matrix.dot(df_column)
.unstack()
.droplevel(0, axis=1)
.rename_axis(index=None, columns=None)
)
w x y z
a 1.4 3.2 3.2 5.0
b 14.6 32.6 32.6 50.6
Simplier是在df_column
中为Series
选择b
,然后使用Series.unstack
和DataFrame.rename_axis
:
df = df_matrix.dot(df_column['b']).unstack().rename_axis(index=None, columns=None)
print (df)
w x y z
a 1.4 3.2 3.2 5.0
b 14.6 32.6 32.6 50.6