【发布时间】:2021-05-03 08:20:56
【问题描述】:
我想对我的数据进行分组,以将接近的日期放在一起。 (不到 2 分钟)
这是我得到的一个例子
> datas = [['A', 51, 'id1', '2020-05-27 05:50:43.346'], ['A', 51, 'id2',
> '2020-05-27 05:51:08.347'], ['B', 45, 'id3', '2020-05-24
> 17:23:55.142'],['B', 45, 'id4', '2020-05-24 17:23:30.141'], ['C', 34,
> 'id5', '2020-05-23 17:31:10.341']]
>
> df = pd.DataFrame(datas, columns = ['col1', 'col2', 'cold_id',
> 'dates'])
前 2 行有结束日期,第 3 行和第 4 行相同,第 5 行单独。
我想得到这样的东西:
> datas = [['A', 51, 'id1 id2', 'date_1'], ['B', 45, 'id3 id4',
> 'date_2'], ['C', 34, 'id5', 'date_3']]
>
> df = pd.DataFrame(datas, columns = ['col1', 'col2', 'col_id',
> 'dates'])
以pythonic方式制作并不难,但我必须在大数据帧上制作,使用groupby方法的pandas方式会非常有效。
在我尝试的日期列上应用日期时间方法后:
> df.groupby([df['dates'].dt.date]).agg(','.join)
但是 .dt.date 方法每天而不是每 2 分钟给出一个日期。
你有解决办法吗?
谢谢
【问题讨论】:
-
我可以在计算时间增量之前使用
col1和col2成对分组,还是仅基于日期而不管其他列的值如何?事实上,(A,51)有没有可能出现两次以上?如果2分钟间隔内有3个或更多dates?
标签: python-3.x pandas pandas-groupby