获取每个打开的文件的第一,第二和第三日期-熊猫

问题描述 投票:1回答:1

我有此代码按col1分组,以按打开文件的时间顺序获得最小的日期,但它似乎以随机顺序出现,但这不是我所需要的。这是我的代码。

data=(df.groupby(['col1']).date
   .apply(lambda x: pd.Series(x.value_counts()
                               .nsmallest(3).index))
   .unstack(level=1).fillna(0).astype(str))

输出:

  col1              0                                1                          2
  file 1    2020-05-07 09:52:44.502     2020-05-06 04:53:32.449     2020-05-18 06:12:27.872
  file 2    2020-05-08 09:02:44.502     2020-05-04 04:53:32.449     2020-05-19 06:12:27.872

我想要的输出:

       col1                 0                                1                          2
      file 1   2020-05-06 04:53:32.449  2020-05-07 09:52:44.502     2020-05-18 06:12:27.872
      file 2    2020-05-04 04:53:32.449 2020-05-08 09:02:44.502     2020-05-19 06:12:27.872

数据:

'{"col1":{"0":"file1","1":"file2","2":"file3","3":"file","4":"file1","5":"file2","6":"file3","7":"file4","8":"file3","9":"file1"},"date":{"0":"2020-05-01 00:38:38.154","1":"2020-05-01 00:38:53.904","2":"2020-05-01 00:43:52.487","3":"2020-05-01 03:35:40.399","4":"2020-05-01 04:19:32.615","5":"2020-05-01 04:22:15.545","6":"2020-05-01 04:22:47.439","7":"2020-05-01 04:23:48.706","8":"2020-05-01 04:25:26.140","9":"2020-05-01 04:28:36.257"}}'

btw,日期是字符串格式,我无法将其转换为日期时间,因为我需要在下一阶段将字符串连接到每个日期以进行一些区分。

[请帮助,如何获得所需顺序的输出。

python pandas numpy
1个回答
0
投票

我认为您想要这个:

df['count'] = df.sort_values('date').groupby('col1').cumcount()

df.set_index(['col1', 'count']).query('count <= 2')['date'].unstack()

输出:

count                        0                        1                        2
col1                                                                            
file   2020-05-01 03:35:40.399                      NaN                      NaN
file1  2020-05-01 00:38:38.154  2020-05-01 04:19:32.615  2020-05-01 04:28:36.257
file2  2020-05-01 00:38:53.904  2020-05-01 04:22:15.545                      NaN
file3  2020-05-01 00:43:52.487  2020-05-01 04:22:47.439  2020-05-01 04:25:26.140
file4  2020-05-01 04:23:48.706                      NaN                      NaN
© www.soinside.com 2019 - 2024. All rights reserved.