按 ID 分组,按日期排序并获取值作为大数据列表 python
Group by ids, sort by date and get values as list on big data python
我有一个大数据(3000 万行)。
每个 table 都有 id、date、value。
我需要遍历每个 id 并根据这些 id 获取按日期排序的值列表,因此第一个值是列表将是较旧的日期。
示例:
ID DATE VALUE
1 02/03/2020 300
1 04/03/2020 200
2 04/03/2020 456
2 01/03/2020 300
2 05/03/2020 78
愿望table:
ID VALUE_LIST_ORDERED
1 [300,200]
2 [300,456,78]
我可以通过 for 循环、应用来完成,但它没有效果,而且对于数以百万计的用户来说,这是不可行的。
我考虑过使用 group by 并对日期进行排序,但我不知道如何制作列表,如果是这样,pandas df 上的 groupby 是最好的方法吗?
我很乐意就如何操作以及使用哪种 df/technology 获得一些建议。
谢谢!
您需要做的是使用 pandas.dataframe.sort_values 对数据进行排序,然后应用 groupby 方法
我没有庞大的数据集来测试此代码,但我相信这可以解决问题:
sorted = data.sort_values('DATE')
result = data.groupby('ID').VALUE.apply(np.array)
因为它是 Python,所以您总是可以将所有内容放在一个语句中
print(data.sort_values('DATE').data.groupby('ID').VALUE.apply(np.array))
我有一个大数据(3000 万行)。 每个 table 都有 id、date、value。 我需要遍历每个 id 并根据这些 id 获取按日期排序的值列表,因此第一个值是列表将是较旧的日期。
示例:
ID DATE VALUE
1 02/03/2020 300
1 04/03/2020 200
2 04/03/2020 456
2 01/03/2020 300
2 05/03/2020 78
愿望table:
ID VALUE_LIST_ORDERED
1 [300,200]
2 [300,456,78]
我可以通过 for 循环、应用来完成,但它没有效果,而且对于数以百万计的用户来说,这是不可行的。 我考虑过使用 group by 并对日期进行排序,但我不知道如何制作列表,如果是这样,pandas df 上的 groupby 是最好的方法吗?
我很乐意就如何操作以及使用哪种 df/technology 获得一些建议。
谢谢!
您需要做的是使用 pandas.dataframe.sort_values 对数据进行排序,然后应用 groupby 方法
我没有庞大的数据集来测试此代码,但我相信这可以解决问题:
sorted = data.sort_values('DATE')
result = data.groupby('ID').VALUE.apply(np.array)
因为它是 Python,所以您总是可以将所有内容放在一个语句中
print(data.sort_values('DATE').data.groupby('ID').VALUE.apply(np.array))