没有要聚合的数字类型

No Numeric Type To Aggregate

我有一个数据框,其中有以下列:

Date - Seller - Amount

代码示例:

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
%matplotlib inline
testframe = pd.DataFrame({'date': ['01/02/2019', '01/02/2019', '01/02/2019', 
'02/02/2019','02/02/2019','03/02/2019'], 
'Seller': ['John', 'Ada', 'John', 'Ada', 'Ada', 'Ada'], 'Amount': 
[150,200,158,200,60,90]})

我这样汇总数据:

agg=pd.DataFrame(base.groupby(['date','Seller'])['Amount'].sum())
agg.reset_index(inplace=True)

然后我尝试使用 FacetGrid 来显示每个卖家的天数(FacetGrid 中的每一行都是一行)。像这样:

g=sns.FacetGrid(data=agg,row='Seller')
g.map(sns.lineplot, 'Amount', 'date')

但是我得到以下错误:

No numeric types to aggregate

在 Whosebug 上还有另一个 post,但没有给我关于如何解决问题的线索。

我检查了包中的变量,它返回了 numpy.int64。我尝试使用 .astype() 将它们转换为 float 和 int,但也没有用。

环境:Jupyter Notebook

有人可以解释一下吗?

提前致谢

可能你的意思是这样的:

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt


base = pd.DataFrame({'date': ['01/02/2019', '01/02/2019', '01/02/2019', 
                                   '02/02/2019','02/02/2019','03/02/2019'], 
    'Seller': ['John', 'Ada', 'John', 'Ada', 'Ada', 'Ada'], 'Amount': 
            [150,200,158,200,60,90]})


base["date"] = pd.to_datetime(base["date"])

agg=pd.DataFrame(base.groupby(['date','Seller'])['Amount'].sum())
agg.reset_index(inplace=True)


g=sns.FacetGrid(data=agg, row='Seller')
g.map(sns.lineplot, 'date', 'Amount')

plt.show()

请注意,John 的情节是空的,因为他只在一天内卖出了一些东西,而且不能从一个点到它自己画一条线。