【问题标题】:pandas: check if value exist groupby column熊猫:检查值是否存在分组列
【发布时间】:2021-10-14 05:50:31
【问题描述】:

我想按日期检查列位置组中是否存在未知值,如果不存在,我想添加值未知的行,总和为 0。

请问我该怎么做?

date        place     sum_
2021-07-04   NY       100
2021-07-04   LA       200
2021-07-04   MILAN    300
2021-07-04   PARIS    100
2021-07-05   NY       200
2021-07-05   LA       100
2021-07-05   MILAN    100
2021-07-05   PARIS    50
2021-07-05   unknown  200

预期输出

date        place     sum_
2021-07-04   NY       100
2021-07-04   LA       200
2021-07-04   MILAN    300
2021-07-04   PARIS    100
2021-07-04   unknown   0
2021-07-05   NY       200
2021-07-05   LA       100
2021-07-05   MILAN    100
2021-07-05   PARIS    50
2021-07-05   unknown  200

【问题讨论】:

    标签: pandas group-by


    【解决方案1】:

    找到具有unknown 的日期并创建一个未知数据框以与原始框架联合

    has_unknown = df.groupby('date').apply(
      lambda x: any(x.place == 'unknown')
    ).rename('has_unknown').reset_index()
    has_unknown['sum_'] = 0
    has_unknown['place'] = 'unknown' 
    out = pd.concat([df, has_unknown.loc[~has_unknown.has_unknown, ['date', 'place', 'sum_']]]
    ).sort_values(['date', 'place'])
    
    # out looks like
             date    place  sum_
    1  2021-07-04       LA   200
    2  2021-07-04    MILAN   300
    0  2021-07-04       NY   100
    3  2021-07-04    PARIS   100
    0  2021-07-04  unknown     0
    5  2021-07-05       LA   100
    6  2021-07-05    MILAN   100
    4  2021-07-05       NY   200
    7  2021-07-05    PARIS    50
    8  2021-07-05  unknown   200
    

    【讨论】:

      猜你喜欢
      • 2021-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-25
      • 1970-01-01
      • 2014-09-05
      • 2014-06-26
      相关资源
      最近更新 更多