我有一个交易数据集,我试图按年份进行汇总,但是当我运行时,输出是按交易记录的单个金额。我已经使用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'])
年份,日期和收入都是我数据框中的所有列。我希望以上的每一年都能有一个总数,而不是看到单个交易的价值。谢谢。
答案 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()