2016-08-11 10 views
1

私は2つのDataFramesがあり、減算したいと思います。別のDataFrameから値を取り除く

DF1:

   Val1   Val2  Val3  
0 -27 -0.8 -6.786321 -7.024615 -13.946589 
1 -27 -0.9 -5.746795 -5.804550 -11.576365 
2 -27 -1.0 -4.624857 -4.372321 -9.103681 
3 -27 -1.2 -2.685832 -2.418888 -5.057056 
4 -27 -1.4 -1.445561 -1.389468 -2.622357 

DF2:私は同じインデックスを持っていたよう

 Bench 
0  0.4601 
1  -5.3336 
2  -6.0163 
3  -4.1776 
4  -2.3472 

は、私が実行しようとしました:df1-df2が、それは動作しませんでした。

は、したがって、私は別の方法を使用しようとしました:

headers = list(df1.columns.values) 
    filtr_headers = filter(lambda x: x!='',headers) 
     for i in filtr_headers: 
       df1['%s' %(i)] = df1['%s' %(i)] - df2['Bench'] 

をしかし、私はNaN値に戻りDATAFRAMEに取得しています。私はなぜそれが起こっているのか分からない。どんなヒントも高く評価されます。

答えて

1

あなたはこのように、pd.DataFrame.subを使用することができます。

In [113]: df1.sub(df2.Bench.values, axis=0) 
Out[113]: 
       Val1  Val2  Val3 
0 -27 -0.8 -7.246421 -7.484715 -14.406689 
1 -27 -0.9 -0.413195 -0.470950 -6.242765 
2 -27 -1.0 1.391443 1.643979 -3.087381 
3 -27 -1.2 1.491768 1.758712 -0.879456 
4 -27 -1.4 0.901639 0.957732 -0.275157 
+0

感謝を使用することができます!それは動きます!なぜ私の実装方法が機能していないのか理解しようとします。これらの2つのデータフレームの列数が異なると問題はありますか?私も減算しながら2つの門の列をスキップしたい。私はそれをしようとしました:df1.ix ['Val1':]。sub(df2.Bench.values、axis = 0)、私は再びエラーが発生しています。 – Monica

+1

@Monicaようこそ。あなたの最初のポイントについて - 同じ名前の列を引くために結合を試みますが、何もありません。あなたの2番目のポイントについて - あなたは奇妙なインデックスのことが起こっている。あなたはそれについて別の質問をするように頼むことができますか?これは別の質問であり、それ自体が興味深いものです。もしあなたが望むなら、ここにリンクを張ってください。私はそこに書こうと思っています。 –

+1

@Monicaいずれにしても、それらは列ではなく、インデックスの一部です。 'df1.index = range(5)'を試して、何が起こるか見てみましょう。 –

0

あなたは

pd.DataFrame(df1.values - df2.values) 
関連する問題