pandas DataFrame combine_first方法转换浮点形式的布尔值

2024-04-20 12:45:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我遇到了一个奇怪的问题,combine\u first方法导致存储为bool的值被提升为float64。 示例:

In [1]: import pandas as pd

In [2]: df1 = pd.DataFrame({"a": [True]})

In [3]: df2 = pd.DataFrame({"b": ['test']})

In [4]: df2.combine_first(df1)
Out[4]:
     a     b
0  1.0  test

这个问题已经在3年前的一篇文章中报道过:pandas DataFrame combine_first and update methods have strange behavior。这个问题被告知要解决,但我在熊猫0.18.1下仍然有这种行为

谢谢你的帮助


Tags: 方法intestimport示例dataframepandasas
2条回答

在事件链的某个地方,为了得到一个组合的数据帧,必须解决潜在的缺失值。我知道你的例子没有遗漏什么。None和{}不是{},或{}。因此,为了有一个包含boolNone或{}的公共dtype,有必要将该列强制转换为object或{}。作为“浮动”,大量的操作变得更加高效,是一个不错的选择。显然,这并不是所有时候的最佳选择,但必须做出选择,熊猫也试图推断出最好的选择。在

解决方法:

设置

df1 = pd.DataFrame({"a": [True]})
df2 = pd.DataFrame({"b": ['test']})

df3 = df2.combine_first(df1)
df3

enter image description here

解决方案

^{pr2}$

enter image description here

我遇到了同样的问题。这个具体的病例似乎还没有在大熊猫身上得到解决。我已经提交了一份缺陷报告:

https://github.com/pandas-dev/pandas/issues/20699

相关问题 更多 >