我有一個熊貓數據框,我想要增量追加行。我的問題是,當試圖發生價值觀時,他們的類型會丟失。這是這成爲'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