Alex Stewart
Alex Stewart

Reputation: 748

Merge and add duplicate integers from a multidimensional array

I have a multidimensional list where the first item is a date and the second is a date time object needing to be added together. For example (leave the second as a integer for simplicity):

[[01/01/2019, 10], [01/01/2019, 3], [02/01/2019, 4], [03/01/2019, 2]]

The resulting array should be:

[[01/01/2019, 13], [02/01/2019, 4], [03/01/2019, 2]]

Does someone have a short way of doing this?

The background to this is vehicle tracking, I have a list of trips performed by vehicle and I want to have a summary by day with a count of total time driven per day.

Upvotes: 0

Views: 40

Answers (2)

Yuda
Yuda

Reputation: 343

You should change your data 01/01/2019 to '01/01/2019'.

@naivepredictor suggested good sample, anyway, if you don't want to import pandas, use this.

my_list = [['01/01/2019', 10], ['01/01/2019', 3], ['02/01/2019', 4], ['03/01/2019', 2]]
result_d = {}

for i in my_list:
    result_d[i[0]] = result_d.get(i[0], 0) + i[1]  

print(result_d) #{'01/01/2019': 13, '02/01/2019': 4, '03/01/2019': 2}
print([list(d) for d in result_d.items()]) #[['01/01/2019', 13], ['02/01/2019', 4], ['03/01/2019', 2]]

Upvotes: 2

naivepredictor
naivepredictor

Reputation: 898

import pandas as pd

# create dataframe out of the given imput
df = pd.DataFrame(data=[['01/01/2019', 10], ['01/01/2019', 3], ['02/01/2019', 4]], columns=['date', 'trip_len'])

# groupby date and sum values for each day
df = df.groupby('date').sum().reset_index()

# output result as list of lists
result = df.values.tolist()

Upvotes: 2

Related Questions