2017-05-30 8 views
-1

以下の操作を実行する最善の方法をアドバイスしています。好ましくは、Python、javascript、またはExcelで。データはCSV形式です(ただし、以下のカンマは削除しています)。私は騒ぎです。私はそれをすることができるはずですが、私はそれがこのような基本的な操作であるので、このようなことをするエレガントな方法があると思います。CSVの連続した行で正味の値を得るための最良の方法

Direction Name  Trial Amount 
     + Matthew  1  500 
     - Matthew  1  250 
     - Matthew  1  250 
     + Matthew  2  1000 
     - Matthew  2  750 
     + Matthew  3  500 
     + Mark   1  500 
     - Mark   1  250 
     + Luke   1  1000 
     + Luke   2  1000 
     + Luke   3  1000 
     - Luke   2  500 

ネット名及び試験(データセット内の試験の大多数)によって各量。

結果は次のようになります。事前に

Direction Name  Trial Amount 
     + Matthew  2  250 
     + Matthew  3  500 
     + Mark   1  250 
     + Luke   1  1000 
     + Luke   2  500 
     + Luke   3  1000 

ありがとう!

+1

この問題を解決するために行ったことをお見せください。 –

+1

ピボットテーブルを適用し(値に署名しますか?) – pnuts

答えて

0

ここでは、Pythonで行う方法の1つです。

import pandas as pd 
import numpy as np 

df['vals'] = df.apply(lambda x: x['Amount'] if x['Direction'] == '+' else x['Amount']*-1, axis=1) 

pd.pivot_table(df, values='vals', columns=['Name','Trial'], aggfunc=np.sum) 

Name  Trial 
Luke  1  1000 
     2   500 
     3  1000 
Mark  1   250 
Matthew 1   0 
     2   250 
     3   500 
dtype: int64 
関連する問題