Python:如何在两个数据帧之间进行操作?

标签 python pandas

我有 2 个数据帧 df1df2 包含相同项目的信息,但 df1 中的某些元素无法出现在 中>df2

例如:

df1 
     id count
0     5  124
1     3  136
2     7  12
3     2  345 


df2 
     id count
0     5  65
1     7  3

我想仅计算存在的元素的分数df1['count']/df2['count'],否则计算0

df3 
     id count
0     5  1.91
1     3  0
2     7  4
3     2  0 

最佳答案

使用map对于新的Series,除以 div最后一个不匹配的 id 被创建为 NaN,并被 fillna 替换。 :

df1['count'] = df1['count'].div(df1['id'].map(df2.set_index('id')['count'])).fillna(0)
print (df1)
   id     count
0   5  1.907692
1   3  0.000000
2   7  4.000000
3   2  0.000000

详细信息:

print (df1['id'].map(df2.set_index('id')['count']))
0    65.0
1     NaN
2     3.0
3     NaN
Name: id, dtype: float64

关于Python:如何在两个数据帧之间进行操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50566259/

相关文章:

Python 按列对数组进行分组并显示唯一值

python - 文件系统方案 '[local]' 未在 Google Colab TPU 中实现

python - 正确使用map将函数映射到df,python pandas

python - 如何部分读取巨大的 CSV 文件?

python - Pandas 有条件地交换两列中的值

python - 正则表达式:如何使用不包括数字的空格/连字符捕获单词?

python - 根据另一个数据框中的查找删除数据框中的行

python - matplotlib - 创建一个多线图,下面有结果摘要

python - 如何将带有 char** argv 的 C 函数输入转换为 python?

python:制作列表列表时,我必须将它们包含在方括号中吗?