使用Python提取和分组

时间:2016-11-17 06:41:48

标签: python scripting

以下是日志文件的一部分,该文件在一段时间内记录单个请求。编写一个python程序来生成每个客户步行总步数的报告。我有一个包含以下行的日志文件。

01-01-2012 01:13:36 ygyfyeic  vyeywq Customerid:1231 walked 245 steps
01-09-2013 01:18:34 gghjjhkl  fyuftf Customerid:56789 walked 678 steps
01-09-2013 01:18:34 hugigygu  hoiigy Customerid:1231  walked 456 steps
01-09-2013 01:18:34  ghguh   kjhih    Customerid:1678 walked 600 steps

我能够在不同的列表中提取客户ID和步骤数,但我不得不创建一个报告,例如每个客户采取的步骤数。

注意:日期保持不变,客户ID的数量不相同。

2 个答案:

答案 0 :(得分:0)

如果您已将数据提取到两个单独的列表中,请调用它们idssteps。我们可以通过以下方式打印报告:

for i in range(len(ids)):
    print('Customer number %s took %s steps' % (ids[i], steps[i]))

您也可以使用zip function,它将两个或多个列表放在一个元组列表中,其中包含每个元素的相应元素:

for cid, csteps in zip(ids, steps):
    print('Customer number %s took %s steps' % (cid, csteps))

答案 1 :(得分:0)

使用pandas和dataframe,

我能够提取客户ID而不是在不同列表中的步骤我假设您有2个差异列表中的customerid和步骤。

将pandas导入为pd

cid = [1231,56789,1231,1678]
steps=[1,2,3,4]

df = pd.DataFrame({
    'cid': cid,
    'steps':steps
})

print(df.groupby(['cid']).sum())

O / P

       steps
cid         
1231       4
1678       4
56789      2

参考:http://www.shanelynn.ie/summarising-aggregation-and-grouping-data-in-python-pandas/