首页 > 解决方案 > 如何将一列除以另一列,其中一个数据框的列值对应于 Python Pandas 中另一个数据框的列值?

问题描述

考虑 Python Pandas 中的以下数据框:

数据框A

可乐 ColB 科尔C
1 439
1 932
1 青蛙 932
2 2122
2 454
2 青蛙 773
3 9223
3 3012
3 青蛙 898

数据框B

寒冷的 油菜
1 101
2 314
3 124

需要注意的是,ColB 只是在 ColA 向上迭代时重复它的字符串值。ColC 和 ColE 是随机的。ColA 和 ColD 对应。ColD 值永远不会有重复(如地图)。

我想在 ColA == ColD 的任何地方将 ColC 除以 ColE,理想情况下将结果值放在 DataframeA 的新列中(或者只是让它覆盖 ColC)。结果值应该能够有小数。

我如何在 Python Pandas 中做到这一点?

标签: pythonpython-3.xpandasdataframedata-science

解决方案


IIUC,您可以合并然后除法,仅用于下面的新 df 使用,否则使用@Manakin 的答案

out = (df_a.merge(df_b,left_on='ColA',right_on='ColD',how='left')
.assign(new=lambda x:x['ColC'].div(x['ColE'])).reindex(columns=[*df_a.columns]+['new']))

print(out)

   ColA  ColB  ColC        new
0     1   dog   439   4.346535
1     1   cat   932   9.227723
2     1  frog   932   9.227723
3     2   dog  2122   6.757962
4     2   cat   454   1.445860
5     2  frog   773   2.461783
6     3   dog  9223  74.379032
7     3   cat  3012  24.290323
8     3  frog   898   7.241935

推荐阅读