按分组不准确计数的Python-pandas

时间:2018-06-29 19:28:37

标签: python pandas pandas-groupby

def comment (row):
    if row['STATUS'] == "CANCELLED":
        return "Cancelled"
    elif  strToDate(row['PROCESS_DATE']) < datetime(2018,1,1) or strToDate(row['PROCESS_DATE']) > datetime(2018,2,1):
        return "Date out of Range"
    elif "Lost" in str(row['NOTE']) or "Stolen" in str(row['TRADE_NOTE_TXT']):
        return 'Lost or Stolen'
    else:
        return 'Other'

df['Comment'] = ''

for i, row in df.iterrows():
    df.at[i,"Comment"] = comment(row)

我使用以下上面的代码根据这些条件更改df ['Comment']的值。但是,当我执行df.count()时,它显示注释中有7790个值。

但是,当我执行df.groupby('Comment')。size()时,输出结果如下,这远远超过了应该出现的注释数。

     Comment
     Cancelled            1171
     Date out of Range    1175
     Lost or Stolen       634
     Other                4810
     dtype: int64

2 个答案:

答案 0 :(得分:1)

也许我对您要问的内容感到困惑,但是这些数字加起来:

1171 + 1175 + 634 + 4810 = 7790

意味着df.count()df.groupby('Comment').size()代表相同数量的行。

答案 1 :(得分:-1)

您首先需要在def comment(row):函数下正确缩进代码,以获得所需的答案。