熊猫分组依据,并找到所有列的第一个非空值

'

我有如下的DF熊猫,

id  age   gender  country  sales_year
1   None   M       India    2016
2   23     F       India    2016
1   20     M       India    2015
2   25     F       India    2015
3   30     M       India    2019
4   36     None    India    2019

我想按ID分组,按照sales_date的形式使用最新的1行,所有非null元素。

预期的输出

id  age   gender  country  sales_year
1   20     M       India    2016
2   23     F       India    2016
3   30     M       India    2019
4   36     None    India    2019

在pyspark中,

df = df.withColumn('age', f.first('age', True).over(Window.partitionBy("id").orderBy(df.sales_year.desc())))

但是我在熊猫上也需要同样的解决方案。

编辑::所有列都可能出现这种情况。不只是年龄。我需要它为所有id拾取最新的非null数据(id存在)。

耶斯列尔

用途GroupBy.first

df1 = df.groupby('id', as_index=False).first()
print (df1)
   id   age gender country  sales_year
0   1  20.0      M   India        2016
1   2  23.0      F   India        2016
2   3  30.0      M   India        2019
3   4  36.0    NaN   India        2019

如果列sales_year未排序:

df2 = df.sort_values('sales_year', ascending=False).groupby('id', as_index=False).first()
print (df2)
   id   age gender country  sales_year
0   1  20.0      M   India        2016
1   2  23.0      F   India        2016
2   3  30.0      M   India        2019
3   4  36.0    NaN   India        2019

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

熊猫-在列中查找第一个非空值

熊猫列列表中每行的第一个非空值

SQL如何找到2列之间的第一个非空值

将列的所有值替换为第一个值-按ID分组

具有多列的表中每个组的第一个非空值

如何根据日期用 NaN 替换列的所有非第一个值?

将列中的所有值设置为等于Postgres中窗口上的第一个非空值

熊猫:按两列分组,对第一列分组中的第一个值求和

按功能分组后获取第一个非空值

MySQL在分组后获得第一个非空值

更改列中的所有第一个值,并与其他列分组

分组并找到R中列组的值的第一个变化

如何获得分组值和重复值的所有“第一个”实例?

计算第一个“分组依据”字段的不同值,而其中两个是

熊猫-删除所有连续的行,但第一个共享相同列值的行除外

熊猫如何获取数据框中所有非零值范围的第一个和最后一个日期?

获取每行的第一个非空值

返回第一个非空/空白值?

在列表中找到所有后续值加一的第一个元素

Pandas:用第一个非空值为用户填写列的值

根据第一个有效的非空列填充数据框中的缺失值

熊猫根据现有列的第一个唯一值创建新列

熊猫分组依据:包括所有行,甚至包括具有空列值的行

PySpark:获取数据框中每个列的第一个非空值

如何使用pandas减去数据集中所有列的分组数据中的第一个和最后一个值

在每行熊猫中,从第一个非NaN开始,X值的窗口保持不变,而所有其他值均为NaN

识别Pandas DataFrame每行中的第一个和所有非零值

提取第一个非随机列的值

获取带有偏移索引的熊猫数据框中的列的第一个值