Python-尝试按年份分组并汇总销售数据时出错

时间:2019-11-26 05:37:52

标签: python pandas dataframe group-by sum

我有一个交易数据集,我试图按年份进行汇总,但是当我运行时,输出是按交易记录的单个金额。我已经使用pd.read_csv将csv导入到python中,并清理了数据框中的一些列并添加了新列。

我正在使用下面的代码在下面生成输出

df['Year'] = df['Date'].dt.year
df.groupby(df['Year'])['revenue'].agg(['sum'])

OUTPUT
    Year                                       Sum
    2015      1203.21 1732.12 2551.01 1733.12 1323.44
    2016      3203.21 1532.12 4431.01 1433.12 7323.44
    2017      2203.21 122.12 131.01 1293.12 4223.44
    2018      6203.21 232.12 1131.01 1533.12 4323.44

我有以下代码行将“收入”从字符串转换为浮点数

pd.to_numeric(df['revenue'])

年份,日期和收入都是我数据框中的所有列。我希望以上的每一年都能有一个总数,而不是看到单个交易的价值。谢谢。

2 个答案:

答案 0 :(得分:0)

Jezrael提出的上述代码按预期工作。 我使用的是pd.to_numeric(df['revenue']),但现在将其更改为df['revenue'] = pd.to_numeric(df['revenue'])

答案 1 :(得分:0)

您可以分配回退to_numeric函数的输出,因为不能就地工作:

df['revenue'] = pd.to_numeric(df['revenue'])

替代解决方案:

df['revenue'] = df['revenue'].astype(float)

df['Year'] = df['Date'].dt.year 
df1 = df.groupby('Year', as_index=False)['revenue'].sum()

如果需要一种解决方案:

df1=pd.to_numeric(df['revenue']).groupby(df['Date'].dt.year.rename('Year')).sum().reset_index()