我有一个像这样的CSV文件:
location start end
house Mon Jul 25 19:04:30 GMT+01:00 2016 Mon Jul 25 19:04:33 GMT+01:00 2016
store Mon Jul 26 19:04:30 GMT+01:00 2016 Mon Jul 26 19:04:33 GMT+01:00 2016
store Mon Jul 27 19:04:30 GMT+01:00 2016 Mon Jul 27 19:04:33 GMT+01:00 2016
... ... ...
还有几千行。它包含有关用户活动的数据。它列出了他们的位置和他们输入的时间并离开了该位置。他们可能会多次访问该位置。没有完整的地点列表。我想生成一个CSV文件,其中包含每个位置花费的总时间和平均花费的时间。对于上面的示例数据,这将是我想要的输出:
location, total time spent, average
store, 6, 3
house, 3, 3
我已经编写了以下代码来开始这个:
import csv
import pandas as pd
filepath = '...'
df = pd.read_csv(filepath)
cat = set()
for index, row in df.iterrows():
cat.add(df['StartLocation'][index].lower())
上面的代码创建了一个集合cat,其中包含一个唯一位置列表。我现在需要查找包含该位置的所有行。我怎样才能有效地做到这一点?
编辑:使用@ DZY的建议我写了这个:
import csv
import pandas as pd
import re
from datetime import datetime
def toEpoch(x):
x1 = re.sub(r":(?=[^:]+$)", "", x)
return (datetime.strptime(x1, '%a %b %d %H:%M:%S %Z%z %Y').strftime('%s'))
filepath = '...'
df = pd.read_csv(filepath)
start = []
end = []
for index, row in df.iterrows():
df['StartTime'][index] = toEpoch(df['StartTime'][index])
df['EndTime'][index] = toEpoch(df['EndTime'][index])
df['TimeTaken'][index] = int(df['EndTime'][index]) - int(df['StartTime'][index])
print(df.groupby('StartLocation').sum())
然而,我仍然对最后一行感到困惑。什么是实际总结?