2017-08-21 4 views
-1

3つの列(A)と6つの列(B)の2つの辞書がありますが、最初の列の値を使用できるようにしたいと思います減算のために第3の列に正しい要素を指定するために、第2の列(1-2000)の値との両方の値を計算する。 2番目のdictは、1番目と2番目の列が正しい行を見つけるために使用されますが、減算に必要な行の6番目の列の値です。複数の辞書で異なる列を使用する減算

A         B 
1 1 260 541      1 1 260 280 0.001 521.4 
1 1 390 1195     1 1 390 900 0.02 963.3 
1 1 102 6      1 1 102 2  0.01 4.8 
2 1 65 12      2 1 65 9  0.13 13.1 
2 1 515 659      2 1 515 356 0.002 532.2 
2 1 354 1200     2 1 354 1087 0.119 1502.3 
3 1 1190 53      3 1 1190 46 0.058 12.0 
3 1 1985 3      3 1 1985 1  0.006 1.02 
3 1 457 192      3 1 25 3  0.001 178.2 
4 1 261 2084     4 1 261 1792 0.196 100.7 
4 1 12 0      4 1 12 0  0.000 12.6 
4 1 1756 30      4 1 1756 28 0.006 23.7 
4 1 592 354      4 1 592 291 0.357 251.9 

したがって、基本的にIは、第一及び第二のカラムに保持された情報を保持しながら、Aの最後の列からBの最後の列を減算したいです。

C   (desired output)      
1 1 260 19.6 
1 1 390 231.7 
1 1 102 1.2 
2 1 65 -1.1 
2 1 515 126.8 
2 1 354 -302.3 
3 1 1190 41.0 
3 1 1985 1.98 
3 1 457 13.8 
4 1 261 1983.3 
4 1 12 -12.6 
4 1 1756 6.3 
4 1 592 102.1 

私は解決策が、haventはを探して時間のSOをしてきたが、まだのよう解決策を見つけたが、私はそれが可能でなければならないと確信しています。 私は、プラス値をプロットし、ネガティブを無視する方法に関する提案を誰かが持っている場合に、後でスキャッタグラフを作成する必要があります。

EDIT: は、私はそれをより明確にするために、次の私のコードを追加して、私は3列のcsvファイルを取り込み、その後、彼らは同じ値を持っている場合、第3列の各値の周波数の数を取得する必要があります最初の列。 Bは、所望のデータ・ストリームを得るためにさらに変更を加え、次に減算を行う必要がある。いくつかのコメントでは、1列目と2列目は不要だが、3列目の値は1列目の値にリンクされているため、常に同じ行になければならないと述べています。 PD 輸入numpyのよう 輸入パンダNP

def ba(fn, float1, float2): 
    ba=pd.read_csv(fn,header=None, skipfooter=6, engine='python') 
    ba['col4']=ba.groupby(['col1','col3']).transform(np.size) 
    ba['col5']=ba['col4'].apply(lambda x: x/float(float2)) 
    ba['col6']=ba['col5'].apply(lambda x: x*float1) 
    ba=ba.set_index('col1') 
    ba = dict(tuple(ba.groupby('col1'))) 
    return ba 
+2

その後、データフレームいるよう? – Zero

+0

あなたのデータは既にデータフレームに入っていますか? –

+0

最初の2つの列と何が関係しているのか分かりません – piRSquared

答えて

0

IIUIC、ABはあなたがdictsまたはデータフレームを意味

In [1062]: A.iloc[:, :3].assign(output=A.iloc[:, -1] - B.iloc[:, -1]) 
Out[1062]: 
    0 1  2 output 
0 1 1 260 19.60 
1 1 1 390 231.70 
2 1 1 102  1.20 
3 2 1 65 -1.10 
4 2 1 515 126.80 
5 2 1 354 -302.30 
6 3 1 1190 41.00 
7 3 1 1985  1.98 
8 3 1 457 13.80 
9 4 1 261 1983.30 
10 4 1 12 -12.60 
11 4 1 1756  6.30 
12 4 1 592 102.10 

詳細

In [1063]: A 
Out[1063]: 
    0 1  2  3 
0 1 1 260 541 
1 1 1 390 1195 
2 1 1 102  6 
3 2 1 65 12 
4 2 1 515 659 
5 2 1 354 1200 
6 3 1 1190 53 
7 3 1 1985  3 
8 3 1 457 192 
9 4 1 261 2084 
10 4 1 12  0 
11 4 1 1756 30 
12 4 1 592 354 

In [1064]: B 
Out[1064]: 
    0 1  2  3  4  5 
0 1 1 260 280 0.001 521.40 
1 1 1 390 900 0.020 963.30 
2 1 1 102  2 0.010  4.80 
3 2 1 65  9 0.130 13.10 
4 2 1 515 356 0.002 532.20 
5 2 1 354 1087 0.119 1502.30 
6 3 1 1190 46 0.058 12.00 
7 3 1 1985  1 0.006  1.02 
8 3 1 25  3 0.001 178.20 
9 4 1 261 1792 0.196 100.70 
10 4 1 12  0 0.000 12.60 
11 4 1 1756 28 0.006 23.70 
12 4 1 592 291 0.357 251.90 
関連する問題