【问题标题】:Select unique values of a column with multiple columns condition选择具有多列条件的列的唯一值
【发布时间】:2021-10-12 18:33:00
【问题描述】:

我有一个数据框,其中包含一些缺少数据的行,但有些行已完成并且与缺少数据的行相同。我希望我的数据框只有完整的 ID,但不排除那些没有任何信息的数据框。例如,在这些相同的 ID 中,哪些 ID 包含更多考虑到 TYPE 的信息。

输入是:

      ID   TYPE   HEIGHT   KG 
 -----------------------------
    MEXU    DOL     NaN    40
    RFGT    DOL     140    47
    RFGT    DOL     NaN   NaN
    RFGT    RET      90   NaN
    OJKU    NaN     NaN   NaN
    TYED    NaN     NaN    80
    TYED    NaN     100    80
    TYED    DOL     100    80
    PJLO    RET     NaN   NaN
    PJLO    DOL     NaN   NaN
    BUAR    NaN     NaN   NaN

我是否必须在 pandas 中使用某种 groupbyagg

预期输出:

      ID   TYPE   HEIGHT   KG 
    -----------------------------
    MEXU    DOL     NaN    40
    RFGT    DOL     140    47
    RFGT    RET      90   NaN
    OJKU    NaN     NaN   NaN
    TYED    DOL     100    80
    PJLO    RET     NaN   NaN
    PJLO    DOL     NaN   NaN
    BUAR    NaN     NaN   NaN

【问题讨论】:

  • 条件?到现在为止你累了什么?你有什么问题?你在研究你的问题时发现了什么?添加所有有问题的人!
  • 这不只是df.groupby('ID', as_index=False).first()吗?
  • 您要求其他人为您完成工作,而没有显示您自己的任何尝试。

标签: python pandas pandas-groupby aggregate


【解决方案1】:

使用groupby.first 函数。

我尝试复制数据,但只复制了前几行。

import pandas as pd

source = {'ID': ['MEXU ','RFGT','RFGT', 'OJKU', 'TYED'], 'TYPE': ['DOL','DOL','DOL', 'RET', 'NaN'], 'HEIGHT': ['NaN', 140, 'NaN', 90, 'NaN'], 'KG': [40, 47, 'NaN', 'NaN', 'NaN']}

df = pd.DataFrame(data=source)


grouped = df.groupby('ID', as_index=False).first()

print(grouped)

打印


      ID TYPE HEIGHT   KG
0   MEXU  DOL    NaN   40
1   OJKU  RET     90  NaN
2   RFGT  DOL    140   47
3   TYED  NaN    NaN  NaN

【讨论】:

    【解决方案2】:

    试试drop_duplicates:

    df.drop_duplicates(['ID', 'TYPE'])
    

    输出:

          ID TYPE  HEIGHT    KG
    0   MEXU  DOL     NaN  40.0
    1   RFGT  DOL   140.0  47.0
    3   RFGT  RET    90.0   NaN
    4   OJKU  NaN     NaN   NaN
    5   TYED  NaN     NaN  80.0
    7   TYED  DOL   100.0  80.0
    8   PJLO  RET     NaN   NaN
    9   PJLO  DOL     NaN   NaN
    10  BUAR  NaN     NaN   NaN
    

    【讨论】:

      猜你喜欢
      • 2023-03-31
      • 1970-01-01
      • 2019-11-06
      • 1970-01-01
      • 1970-01-01
      • 2023-03-30
      • 1970-01-01
      • 2012-12-06
      • 1970-01-01
      相关资源
      最近更新 更多