【问题标题】:Grouping data to complete records between each other分组数据以完成彼此之间的记录
【发布时间】:2020-05-17 11:00:30
【问题描述】:

我有一个任务,我需要用重复记录清理我的数据,但同时用 nan 用具有相同名称的记录的值填充这些单元格,例如:

id          id2      name   other_n        date       country
1.177.002   nan test_name    nan     8 decembre 1981    usa
1.177.002   A   test_name   ALVA        nan             nan 

到目前为止,我尝试了正常的 groupby,但没有得到我预期的结果

tst.groupby('name').mean()
tst.groupby('name').sum()

我正在寻找的结果应该是这样的:

id          id2      name   other_n        date       country
1.177.002   A   test_name    ALVA     8 decembre 1981   usa

【问题讨论】:

  • 当数据重复时,其他列中的值是否会发生冲突,还是始终保证为NaN或唯一的非空值(每个名称)?
  • @ALollz 它总是保证为 NaN,
  • 使用“第一”作为您的聚合

标签: python pandas group-by


【解决方案1】:

运行:

df.groupby('name', as_index=False)\
    .agg(lambda col: col.loc[col.first_valid_index()])\
    .reindex(df.columns, axis=1)

需要最后的 reindex 才能将列顺序恢复到原来的状态 它们在源 DataFrame 中排序。否则 name 将被移动 第一名

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-01
    • 2019-02-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多