Python 带dicts的df.append()将布尔值转换为1和0

Python 带dicts的df.append()将布尔值转换为1和0,python,python-3.x,pandas,Python,Python 3.x,Pandas,假设我创建一个空数据帧: df = pd.DataFrame() 我通过df.append()添加了一个dict: 这给了我一个预期的结果 A B 0 foo bar 但是,如果dict值中存在布尔值,即 df.append({'A': True, 'B': False}, ignore_index=True) 布尔值被转换成浮点数 A B 0 1.0 0.0 为什么会发生这种情况/如何防止这种转换?如果可能的话,我不希望对完成的数据帧做任何事情(

假设我创建一个空数据帧:

df = pd.DataFrame()
我通过
df.append()
添加了一个dict:

这给了我一个预期的结果

     A    B
0  foo  bar
但是,如果dict值中存在布尔值,即

df.append({'A': True, 'B': False}, ignore_index=True)
布尔值被转换成浮点数

     A    B
0  1.0  0.0
为什么会发生这种情况/如何防止这种转换?如果可能的话,我不希望对完成的数据帧做任何事情(也就是说,不希望强制从float返回到boolean)

编辑:找到了自己的解决方案,但仍想知道发生上述行为的原因。我的解决办法是:

df.append(pd.DataFrame.from_dict({'A': True, 'B': False}, orient='index').T, ignore_index=True)
这就给出了理想的结果

      A      B
0  True  False

您可以在追加之前将dict转换为数据帧,以保持数据类型的一致性:

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


     A      B
0   True    False

看看是否能解决你的问题。我想只有当您有一个数据类型数据帧时,它才会工作。您应该能够将空数据帧初始化为bool类型。
df = pd.DataFrame()
df.append(pd.DataFrame({'A': True, 'B': False}, index = [0]))


     A      B
0   True    False