我有一个熊猫数据框,我想要增量追加行。我的问题是,当试图发生价值观时,他们的类型会丢失。这是这成为'object'
(int
成为float
仍然是一件坏事,但至少在程序的其余部分仍然可以运行,只是效率较低)特烦:为熊猫数据框添加行同时保留类型
data1 = pd.DataFrame()
data1['foo'] = 5
print("*\n",data1.dtypes)
data2 =pd.DataFrame()
data2['bar'] = True
print("**\n",data2.dtypes)
data3 = pd.concat([data1, data2])
print("***\n",data3.dtypes)
data4 = data1.append(data2)
print("****\n",data4.dtypes)
*
foo int64
dtype: object
**
bar bool
dtype: object
***
bar object
foo float64
dtype: object
****
bar object # <-- bool type becomes object
foo float64
dtype: object
你有一个想法,如何预防它?
我不要以为这里有列与行之间的混合。目标是追加包含可能不同的列集的新行。当列不存在于其中一个数据框中时,我希望它在追加/连接之后保持其类型,因为在技术上它的包含是未触及的(对于缺失的值,不包含)。我的猜测是,空值默认是'np.nan'(正确的我),对于'int64'或'bool'不存在,因此这些列的类型切换为同时存储现有数据和'np.nan ' – amougel
现在我更了解你,但不完全。你能用注释中的伪代码更新你的问题吗?即在每一步中解释你打算做什么,以及你期望发生什么。 – yuval
按照您的评论,我编辑了我的答案和其他信息。 – yuval