【问题标题】:pandas valueError when using agg function使用 agg 函数时的 pandas valueError
【发布时间】:2019-08-02 11:21:50
【问题描述】:

我正在熟悉 pandas,但遇到了一个我无法找到答案的问题。

我正在使用这里提供的数据集https://raw.githubusercontent.com/Shreyas3108/house-price-prediction/master/kc_house_data.csv

然后我正在运行函数df.describe(),它输出它应该没有问题的所有内容。

因为我目前只对最小值/最大值的最小值、最大值和差异感兴趣。我正在使用 pandas 的 df.agg 函数通过运行以下代码来获取每列的最小值/最大值

df.agg([min, max],axis=0)

当我运行它时,我得到了错误:

    ~/.virtualenvs/cv/lib/python3.6/site-packages/pandas/core/base.py in _aggregate_multiple_funcs(self, arg, _level, _axis)
    615         # if we are empty
    616         if not len(results):
--> 617             raise ValueError("no results")
    618 
    619         try:

ValueError: no results

df.describe() 能够毫无问题地找到每列的最小值/最大值时,我不确定为什么会出现此错误。我一直在寻找空白和 NaN 值以及寻找字符串以查看它们是否产生了问题,而我的数据似乎没有它们。

我将不胜感激任何指向我出错的地方。

【问题讨论】:

标签: python pandas data-science


【解决方案1】:

问题可能不在df.agg 而是在df 本身。您可以在调用df.agg 之前先调用df,看看它是否真的包含数据。

【讨论】:

    【解决方案2】:

    我已经尝试了下面的代码并且能够成功地完成您在问题中提到的。

    df = pd.read_csv('https://raw.githubusercontent.com/Shreyas3108/house-price-prediction/master/kc_house_data.csv')
    df = df.agg([min, max]).T
    CLM = ['max', 'min']
    df = (df.drop(CLM, axis=1)
             .join(df[CLM].apply(pd.to_numeric, errors='coerce')))
    
    df = num_df[num_df[CLM].notnull().all(axis=1)]
    df['Diff'] = df['max'] - df['min']
    df
    

    请尝试一下,让我知道这是否适合您。

    【讨论】:

    • 谢谢@Ghanshyam。我运行了您的代码,但未定义 num_dfdata_columns
    • 我已经解决了,现在检查一下,让我知道它是否适合你。
    猜你喜欢
    • 2017-04-06
    • 2017-12-15
    • 1970-01-01
    • 1970-01-01
    • 2018-08-01
    • 2020-05-17
    • 2015-02-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多