提供された引数がブール値の列を提供していない場合、保存された値がsにアップキャストされるという奇妙な問題 (combine_first
または意図された?) に遭遇しました。update
bool
float64
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
.