熊猫点积在多索引数据帧的每个子帧上



我有以下数据df_matrixlevel_1level_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_columnid是索引:

id
值_10.1
值_20.2
值_30.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.unstackDataFrame.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

最新更新