Python:根据另一列

时间:2018-02-26 01:44:17

标签: python pandas sum

我有一个如下数据集:

dfTrip:
user_id     status    length
1335         start      0  -> 1st trip starts here
1335         zz         1
1335         zz         7
1335         zz         1
1335         end        5  -> 14 in total for 1st trip
1335         zz         1  -> not added
1335         start      0  -> 2nd trip starts here
1335         zz         4
1335         zz         7
1335         zz         6
1335         end        5  -> 22 in total for 2nd trip

我想计算每个" user_id"的行程长度之和。并保存在字典中。这次旅行应该从"开始"结束"结束"。例如,这里我们应该有这个结果:

myDict={(1: 14), (2: 22),...}

键显示第i个行程,值显示行程的长度。

有人可以帮我吗?

1 个答案:

答案 0 :(得分:1)

可能有一个更聪明的解决方案,但这应该有效。我们需要遍历行。

trips = {} #Initialize dict
onTrip = False 
i = 1
for index, row in dfTrip.iterrows():

    if row['status']=='start': #Start the trip
        onTrip=True
        trips[i]=row['length']
        continue

    if onTrip: #Add each value of the trip
        trips[i]+=row['length']

    if row['status']=='end': #End the trip, incrementing i
        onTrip=False
        i+=1