尝试在 pandas 中使用聚合求和函数

Trying to use the aggregate sum function in pandas

我有一个数据框,我正在尝试按 TERRORIST 和 DATE 对其进行分组,然后 运行 对其余 2 列 FATALITIES 和 INJURED 进行聚合求和函数。问题是当我 运行 代码不添加数字时它只是将它们连接起来。

例如,这是我的代码:

df_3 = df_2.groupby(by=['TERRORIST','DATE']).agg({'FATALITIES': 'sum',
                          'INJURED': 'sum'})

它 returns 一个数字列表,例如 1441133111111111222142

我相信这种情况正在发生,因为它将我的死亡和受伤列中的数据视为字符串而不是整数。但是当我执行以下操作时

def clean_2(row):
    fatalities = row['FATALITIES']
    injured = row['INJURED']
    fatalities = pd.to_numeric(df_2['FATALITIES'])
    injured = pd.to_numeric(df_2['INJURED'])
    return pd.Series([fatalities, injured])

df_2[['FATALITIES', 'INJURED']] = df_2.apply(clean_2, axis=1)

df_3 = df_2.groupby(by=['TERRORIST','DATE']).agg({'FATALITIES': 'sum',
                          'INJURED': 'sum'})

我得到以下回溯:

ValueError: Function does not reduce

有人知道我做错了什么吗?

你的转换为数字的函数似乎太复杂了,你有没有试过像这样的东西:

df_2['FATALITIES'] = df_2['FATALITIES'].astype(int)

您也可以对 INJURED 列执行此操作,如果没有出现错误,则 groupby 操作应该有效。

您应该将列转换为数字,而不是按元素转换:

df_2['FATALITIES'] = pd.to_numeric(df_2['FATALITIES'])
df_2['INJURED'] = pd.to_numeric(df_2['INJURED'])

df_3 = df_2.groupby(by=['TERRORIST','DATE']).agg({'FATALITIES': 'sum', 'INJURED': 'sum'})