假设我创建了一个空数据框:
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/