具有一个日期和三个不同值的数据框:我怎样才能得到中间的那个?
Dataframe with one date and three distinct values: how can I get the one in the middle?
我有一个数据框,其中包含两个应用程序的每日下载量。但是每天我有 3 个不同的下载数字:付费下载(最高值)、自然下载(最小值)和其他(中间值)。
它们没有标记,所以我唯一知道的是我需要对这三个值进行排序并得到中间的那个。原始数据集如下所示:
id
date
downloads
100
2018-01-05
2000
100
2018-01-05
45000
100
2018-01-05
44000
110
2018-01-05
3000
110
2018-01-05
7000
110
2019-01-05
8000
100
2018-01-06
9000
100
2019-01-06
77000
100
2020-01-06
75000
110
2018-01-06
1000
110
2019-01-06
6000
110
2020-01-06
9000
我需要的最终结果如下所示:
id
date
downloads
100
2018-01-05
44000
110
2018-01-05
7000
100
2018-01-06
75000
110
2018-01-06
6000
用groupby
取第二个元素用nth
:
df.groupby(['id', 'date'], as_index=False).nth(1)
我有一个数据框,其中包含两个应用程序的每日下载量。但是每天我有 3 个不同的下载数字:付费下载(最高值)、自然下载(最小值)和其他(中间值)。
它们没有标记,所以我唯一知道的是我需要对这三个值进行排序并得到中间的那个。原始数据集如下所示:
id | date | downloads |
---|---|---|
100 | 2018-01-05 | 2000 |
100 | 2018-01-05 | 45000 |
100 | 2018-01-05 | 44000 |
110 | 2018-01-05 | 3000 |
110 | 2018-01-05 | 7000 |
110 | 2019-01-05 | 8000 |
100 | 2018-01-06 | 9000 |
100 | 2019-01-06 | 77000 |
100 | 2020-01-06 | 75000 |
110 | 2018-01-06 | 1000 |
110 | 2019-01-06 | 6000 |
110 | 2020-01-06 | 9000 |
我需要的最终结果如下所示:
id | date | downloads |
---|---|---|
100 | 2018-01-05 | 44000 |
110 | 2018-01-05 | 7000 |
100 | 2018-01-06 | 75000 |
110 | 2018-01-06 | 6000 |
用groupby
取第二个元素用nth
:
df.groupby(['id', 'date'], as_index=False).nth(1)