私はインクリメンタルに行を追加したいpandasデータフレームを持っています。私の問題は、値を出そうとすると型が失われるということです。これは、(int
がfloat
になってきては、まだ悪いことであるが、少なくとも、プログラムの残りの部分はまだだけ少なく効率的に、実行することができます)'object'
なっに特に迷惑です:保存タイプの間にPandas Dataframeの行を追加する
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
あなたは防ぐためにどのようなアイデアを持っていますかそれ?
をデータフレームを使用している場合ここに列と行の間にミックスがあるとは思わないでください。目的は、おそらく異なる列セットを含む新しい行を追加することです。列がデータフレームの1つに存在しないとき、技術的にその包含が手つかず(欠損値のために実行されていない)ため、追加/連結の後でその型を把握したいと思います。私の推測では、空の値は、デフォルトでは 'int64'や 'bool'には存在しない' np.nan'(正解)であるため、カラムはその型を切り替えて既存のデータと 'np.nan ' – amougel
私はあなたのことをよく理解していますが、完全には理解していません。コメント内の擬似コードで質問を更新できますか?私。それぞれのステップで、あなたがしようとしていることを正確に説明し、何が起こると思いますか。 – yuval
あなたのコメントに続いて、私は追加情報で私の答えを編集しました。 – yuval