我有一个场景,我必须阅读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
我需要以下格式输出:
name created inserted removed
ABC 0 1 0
DEF 0 0 1
GHI 1 0 0
值1
是ABC
与完成插入状态的日期差异。
任何帮助将不胜感激。
答案 0 :(得分: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