首页 > 解决方案 > 将一个数字除以熊猫中列的所有值

问题描述

df1 有一列(总计),其中 2 个值分别为 5000 和 1000,ID 分别为 A 和 B。df2 有一列(标记)有 10 个值,其中前 5(100,200,300,400,500)个值的 ID 为 A,接下来的 5 个值的 ID 为 B(10,20,30,40,50)。现在我必须得到预期的输出

   id    final_value 
 - A     50
 - A     25
 - A     16.6
 - A     12.5
 - A     10
 - B     100
 - B     50
 - B     33.3
 - B     25
 - B     20

我的代码是 new_df = df1['total']/df2['marks']

但我得到了输出

A    50
B    100

其余的NaN

标签: pythonpandas

解决方案


熊猫分部逐个元素地使用两个“列”(系列)。

如果要使用“id”作为链接进行划分,则必须在之前合并数据框:

df1 = pd.DataFrame([[5000, 'A'], [1000, 'B']], columns=['test', 'id'])
df2 = pd.DataFrame([[100, 'A'], [200, 'A'], [300, 'A'], [400, 'A'], [500, 'A'], [10, 'B'], [20, 'B'], [30, 'B'], [40, 'B'], [50, 'B']],columns=['marks', 'id'])
df3 = df1.merge(df2, on='id')
df3['test']/df3['marks']

推荐阅读