首页 > 解决方案 > 如何划分具有不同列长度的两个dfs?

问题描述

想象一下,您有以下 df:

lines

+----+-----------------+-----------------+-----------------+-----------------+-----------------+
|    |   line amount#1 |   line amount#2 |   line amount#3 |   line amount#4 |   line amount#5 |
|----+-----------------+-----------------+-----------------+-----------------+-----------------|
|  0 |             250 |          250    |           250   |          250    |             250 |
|  1 |             250 |          250    |           250   |          250    |             250 |
|  2 |              14 |            7.35 |             9.9 |           27.75 |             nan |
+----+-----------------+-----------------+-----------------+-----------------+-----------------+








perc
+--------------------+--------------------+--------------------+--------------------+--------------------+--------------------+
|   btw-percentage#1 |   btw-percentage#2 |   btw-percentage#3 |   btw-percentage#4 |   btw-percentage#5 |   btw-percentage#6 |
|--------------------+--------------------+--------------------+--------------------+--------------------+--------------------|
|                10  |                nan |                nan |                nan |                nan |                nan |
|                nan |                nan |                nan |                nan |                nan |                nan |
|                nan |                nan |                nan |                nan |                nan |                nan |
+--------------------+--------------------+--------------------+--------------------+--------------------+--------------------+




update  = lines.to_numpy() / perc.to_numpy()

划分时出现以下错误:

ValueError: operands could not be broadcast together with shapes (3,5) (3,6) 

这是合乎逻辑的,因为列的形状不同。

我想根据行列的长度修剪 perc 列的列形状。所以这将成为#5。用 numpy 可以吗?除法后所需的输出:

+----+-----------------+-----------------+-----------------+-----------------+-----------------+
|    |   line amount#1 |   line amount#2 |   line amount#3 |   line amount#4 |   line amount#5 |
|----+-----------------+-----------------+-----------------+-----------------+-----------------|
|  0 |             25  |          250    |           250   |          250    |             250 |
|  1 |             250 |          250    |           250   |          250    |             250 |
|  2 |              14 |            7.35 |             9.9 |           27.75 |             nan |
+----+-----------------+-----------------+-----------------+-----------------+-----------------+

请帮忙!

标签: pythonpandasdataframenumpy

解决方案


尝试这个,

for x, y in zip(lines.columns, perc.columns):
    lines[x] = lines[x] / perc[y].fillna(1)

推荐阅读