尝试在 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'})
我有一个数据框,我正在尝试按 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'})