2017-06-02 10 views
0

私は、Excelファイルを読み込んで各ステータスの日付差を計算し、別のExcelファイルに出力を保存するシナリオがあります。Excelデータの日付差の計算

date name status 
1/15/2017 ABC insert_start 
1/16/2017 ABC insert_complete 
1/17/2017 DEF remove_start 
1/18/2017 DEF remove_complete 
1/19/2017 GHI create_start 
1/20/2017 GHI create_complete 

は、私は次の形式で出力する必要があります。

1が挿入状態を完了するために ABCの日付の差がある
name created inserted removed 
ABC  0  1   0 
DEF  0  0   1 
GHI  1  0   0 

。 ご協力いただければ幸いです。

+1

は私たちにあなたが使用し、それがないかの要件を満たしていない方法を説明しようとしているコードを表示してください。 SOは無料のコード作成サービスではないことに注意してください。 – lit

+0

これまでに何を試しましたか? – Mureinik

+0

私はopenpyxlパッケージを使ってExcelファイルを読み込もうとしました。各名前を反復して新しい形式に変換する方法が不明です。 – reesh

答えて

0

たとえば、dfは、Excelファイルをロードして作成したデータフレームです(例のようになります)。あなたは今

df = pd.read_csv('foo.csv', sep='\s+', parse_dates=['date']) 

でそれをロードしたかもしれない、あなたはこれを行うことができます。

pivoted = df.pivot('name', 'status').fillna(0) 
ops = ("create", "insert", "remove") 
result = pd.concat([ pivoted['date', op + '_complete'] 
        - pivoted['date', op + '_start'] 
        for op in ops], axis=1) 
result.columns = ops 
#  create insert remove 
#name       
#ABC 0 days 1 days 0 days 
#DEF 0 days 0 days 1 days 
#GHI 1 days 0 days 0 days 
+0

ありがとうございます。私は考慮したくないファイルに重複したステータスを持つことに言及するのを忘れてしまった。 "ValueError:インデックスに重複するエントリが含まれていて、再形成できません"というエラーが表示されます。.Pls help – reesh

+0

例を更新してください。 – DyZ