如何用另一DataFrame的单列对当前DataFrame多列做除法运算?
DataFrame逐列与单列对应行除法的最优解法
构造示例数据
先还原你的两个DataFrame:
import pandas as pd df1 = pd.DataFrame({ 'Column A': [10, 20], 'Column B': [40, 50], 'Column C': [30, 20] }) df2 = pd.DataFrame({ 'Column D': [2, 10] })
问题原因
直接用df1.div(df2)会返回全NaN的结果,因为pandas的div方法默认按列名对齐,而df1和df2没有同名列,无法匹配计算。
最优解法
只需将df2的单列转为Series,让pandas按行索引对齐,就能实现逐列对应行的除法:
# 提取df2的单列作为Series,指定axis=0确保行对齐 result = df1.div(df2['Column D'], axis=0) # 重命名列名到你期望的名称 result.columns = ['Column E', 'Column F', 'Column G']
最终结果
运行后得到的result就是你要的输出:
| Column E | Column F | Column G |
|---|---|---|
| 5 | 20 | 15 |
| 2 | 5 | 2 |
这种方法不需要遍历列,完全利用pandas的向量化运算,效率远高于循环遍历。
内容的提问来源于stack exchange,提问作者TMK
相关产品推荐
相关产品推荐

