首页 > 解决方案 > 结合 pd.merge 与 round 和 astype

问题描述

所以我有两个数据框,并使用 pd.merge 从 df2 向 df1 添加一列

它工作正常,只有一个小问题,它增加了 5 个小数。所以要显示它是这样的:

df1
room | value
A    | 10
B    | 19

df2
name  | room | value | value2
Joe   |   A  |   10  | 10.00000
Peter |   B  |   19  | 19.00000

我可以将 round().astype(int) 与 pd.merge 结合起来吗?

当前的:

final = pd.merge(left=df1, right=df2, on="room", how="left")

想法(给出错误“无法将非有限值(NA 或 inf)转换为整数”):

final = pd.merge(left=df1, right=df2, on="room", how="left").round().astype(int)

在之前的案例中,我使用 .round().astype(int) 提取了该行,然后使用合并将该行添加到新的 df 中。所以有了这个额外的步骤,它就起作用了。只是想知道是否还存在更直接的方法。

感谢您的任何建议。

此致

米奇

标签: pythonpandasmerge

解决方案


好的,刚发现这个问题:

使用 python pandas 合并数据帧中的整数变为十进制

所以这是有道理的。因此,我必须首先将所有“nan”替换为 0,然后执行 int 命令。长话短说:额外的方式就是方式:) (.fillna(0))


推荐阅读