【发布时间】:2016-09-04 13:42:23
【问题描述】:
我从 Excel 中读取了销售交易表,我很想知道在每个地点售出第一件商品后 1 小时内的销售数量。此外,我想知道其中有多少是用卡和现金购买的/ 设 A 为销售报表,我要创建 B。
A=
item Location Time Payment
X Canada 10:03:18 CreditC
X Canada 10:08:38 Cash
X Canada 10:24:46 Cash
X Canada 11:16:35 Cash
X US 10:00:16 Cash
X US 11:52:12 CreditC
Y Canada 2:08:38 CreditC
Y Canada 4:01:48 Cash
Y US 13:32:02 CreditC
Y US 14:07:03 Cash
item location first sale count CreditCard Cash
X Canada 10:03:18 3 1 2
X US 10:00:16 1 0 1
Y Canada 2:08:38 1 1 0
Y US 13:32:02 2 1 1
我这样做在第 6 行和第 9 行中出现错误。我已经编写了一些解决方法来完成这项工作,但我想了解什么是最好的方法。
#group the transactions within the time interval
df['start'] = pd.to_datetime(df['Time'])
grouped = df.groupby(['item', 'Location', 'Time'])
df['end'] = (grouped['start'].transform(lambda grp: grp.min()+pd.Timedelta(minutes=interval)))
df['count'] = (df['start'] < df['end'])
df['CreditCard'] = (df.Payment.map(len) == 7 and df['start'] < df['end'])
Summary = pd.DataFrame(grouped['count'].sum()).reset_index()
Summary['CreditCard']=pd.Sereis(grouped['CreditCard'].sum(), index=Summary.index)
【问题讨论】:
标签: python pandas dataframe group-by grouping