python - df.append() with dicts 将 bool 值转换为 1 和 0

标签 python python-3.x pandas

假设我创建了一个空数据框:

df = pd.DataFrame()

然后我通过 df.append() 添加一个字典:

df.append({'A': 'foo', 'B': 'bar'}, ignore_index=True)

这给了我预期的结果

     A    B
0  foo  bar

但是,如果字典值中有任何 bool 值,即

df.append({'A': True, 'B': False}, ignore_index=True)

bool 值被转换为 float 。

     A    B
0  1.0  0.0

为什么会发生这种情况/我怎样才能阻止这种转换?如果可能的话,我宁愿不对完成的数据框做任何事情(即,不希望将 float 强制转换回 bool 值)。

编辑:找到了我自己的解决方案,但仍然想知道为什么会发生上述行为。我的解决方案是:

df.append(pd.DataFrame.from_dict({'A': True, 'B': False}, orient='index').T, ignore_index=True)

哪个给出了想要的

      A      B
0  True  False

最佳答案

您可以在追加之前将字典转换为 DataFrame 以保持数据类型一致:

df = pd.DataFrame()
df.append(pd.DataFrame({'A': True, 'B': False}, index = [0]))


     A      B
0   True    False

关于python - df.append() with dicts 将 bool 值转换为 1 和 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49824804/

相关文章:

python - 如何在循环期间更新 Django 查询集中的数据?

python - 如何找到包含给定节点集最大数量的连通分量

python - Miniconda 与 Python 3.6 使用哪个安装程序?

python - 平均几个时间序列和置信区间(带有测试代码)

python - 无条件地替换 Pandas 列中的所有值

python - 在 virtualenv 中使用 Flask-Babel 失败

python NumPy : how to construct a big diagonal array(matrix) from two small array

Python更改异常可打印输出,例如重载__builtins__

python - 复制 matplotlib 艺术家

python - 合并具有相同名称的数据框列,但不对列进行排序