提供された引数がブール値の列を提供していない場合、保存された値がsにアップキャストされるという奇妙な問題 (combine_firstまたは意図された?) に遭遇しました。updateboolfloat64
ipython でのワークフローの例:
In [144]: test = pd.DataFrame([[1,2,False,True],[4,5,True,False]], columns=['a','b','isBool', 'isBool2'])
In [145]: test
Out[145]:
a b isBool isBool2
0 1 2 False True
1 4 5 True False
In [147]: b = pd.DataFrame([[45,45]], index=[0], columns=['a','b'])
In [148]: b
Out[148]:
a b
0 45 45
In [149]: test.update(b)
In [150]: test
Out[150]:
a b isBool isBool2
0 45 45 0 1
1 4 5 1 0
updateこれは関数の動作であることを意味していましたか? 何も指定されていなければupdate、他の列を台無しにしないと思います。
編集:もう少しいじり始めました。プロットが厚くなります。もう 1 つコマンドを挿入すると、test.update([])を実行する前にtest.update(b)、ブール値の動作は としてアップキャストされた数値を犠牲にして機能しobjectsます。これは、DSM の簡略化された例にも当てはまります。
panda のソース コードに基づくと、reindex_like メソッドは dtype の DataFrame を作成し、reindex_like メソッドは dtype の DataFrame をobject作成bしているように見えfloat64ます。はより一般的であるためobject、後続の操作はブール値で機能します。残念ながらnp.log、数値列で実行すると、AttributeError.