如何以 python 中的另一组为条件按组获取最小值?
How to get min value by group conditional on another group in python?
在 python 中,如何根据另一个值获取组中的最小日期。
例如所以在下面我想要按 id 的最小日期,其中值 == 1 或者如果没有值等于 1(值 == 1)那么最小日期值 == 0.
|----|--------------|-------------|
| id | date | value |
|----|--------------|-------------|
| 1 | 2020-01-01 | 1 |
| 1 | 2020-01-04 | 1 |
| 1 | 2020-01-05 | 1 |
| 2 | 2020-01-01 | 1 |
| 3 | 2020-01-01 | 0 |
| 3 | 2020-01-05 | 1 |
| 4 | 2020-01-05 | 0 |
|----|--------------|-------------|
预计:
|----|--------------|-------------|
| id | date | value |
|----|--------------|-------------|
| 1 | 2020-01-01 | 1 |
| 2 | 2020-01-01 | 1 |
| 3 | 2020-01-05 | 1 |
| 4 | 2020-01-05 | 0 |
|----|--------------|-------------|
使用DataFrame.sort_values
by all 3 columns and then remove duplicates by id
column with DataFrame.drop_duplicates
:
df['date'] = pd.to_datetime(df['date'])
df = (df.sort_values(['id','value','date'], ascending=[True, False, True])
.drop_duplicates(['id']))
print (df)
id date value
0 1 2020-01-01 1
3 2 2020-01-01 1
5 3 2020-01-05 1
6 4 2020-01-05 0
在 python 中,如何根据另一个值获取组中的最小日期。
例如所以在下面我想要按 id 的最小日期,其中值 == 1 或者如果没有值等于 1(值 == 1)那么最小日期值 == 0.
|----|--------------|-------------|
| id | date | value |
|----|--------------|-------------|
| 1 | 2020-01-01 | 1 |
| 1 | 2020-01-04 | 1 |
| 1 | 2020-01-05 | 1 |
| 2 | 2020-01-01 | 1 |
| 3 | 2020-01-01 | 0 |
| 3 | 2020-01-05 | 1 |
| 4 | 2020-01-05 | 0 |
|----|--------------|-------------|
预计:
|----|--------------|-------------|
| id | date | value |
|----|--------------|-------------|
| 1 | 2020-01-01 | 1 |
| 2 | 2020-01-01 | 1 |
| 3 | 2020-01-05 | 1 |
| 4 | 2020-01-05 | 0 |
|----|--------------|-------------|
使用DataFrame.sort_values
by all 3 columns and then remove duplicates by id
column with DataFrame.drop_duplicates
:
df['date'] = pd.to_datetime(df['date'])
df = (df.sort_values(['id','value','date'], ascending=[True, False, True])
.drop_duplicates(['id']))
print (df)
id date value
0 1 2020-01-01 1
3 2 2020-01-01 1
5 3 2020-01-05 1
6 4 2020-01-05 0