2016-08-26 2 views
4

2つのシリーズがあります。私は別のデータフレームから1つのデータフレームを差し引いていますが、それらは異なる数の列を持っています。パンダ:2つのデータフレームを減算するときのすべてのNaN

>df1 

index 0 1 2 3 4 5 
TOTAL 5 46 56 110 185 629 

>df2 
index 1 2 3 4 5 
Use  25 37 86 151 512 

Iは、異なる寸法を有する2つのデータフレームを減算する(この場合、列0)ミスマッチ列内のNaNでのみもたらすと仮定するであろう。残りの列は、[1]、DF1 [1] -df2 DF1の結果であろう[2] -df2 [2]、等

>df1 - df2 
index 0 1 2 3 4 5 
TOTAL NaN 21 19 24 34 117 

しかし、これは当てはまりません。これは、データフレームを引くとどうなりますか?

>df1 - df2 
index 0 1 2 3 4 5 
Use  NaN NaN NaN NaN NaN NaN 
TOTAL NaN NaN NaN NaN NaN NaN 

私もちょうど値を引いてみました:私は間違って

>df1.values - df2.values 
Traceback (most recent call last): 

    File "<ipython-input-376-1dc5b3b4ad3e>", line 1, in <module> 
    total_drugs.values-(restraints_drugs.values+norestraints_drugs.values) 

ValueError: operands could not be broadcast together with shapes (1,6) (1,5) 

何をしているのですか?私はパンダ0.18を使用しています。

答えて

2

2つのデータフレームを減算しています。 両方の列インデックスが一致している必要があります。あなたの場合、行インデックスTOTALUseは一致しません。

あなたが探しているものを手に入れるために、あなたはdf1

df1.sub(df2.squeeze()) 

enter image description here

それともからシリーズdf2.ix['Use']を減算したい:

df1.sub(df2.ix['Use']) 

または:

df1.sub(df2.loc['Use']) 

または:

df1 - df2.ix['Use'] 

または:

df1 - df2.loc['Use'] 
+0

ありがとう! squeeze()ソリューションは完全に機能しました。私は列のインデックスが一致しなければならないことを知っていましたが、行のインデックスも一致しなければならないことを認識しませんでした。 – ale19

関連する問題