pandas.DataFrame.agg 不适用于 np.std?

Posted

技术标签:

【中文标题】pandas.DataFrame.agg 不适用于 np.std?【英文标题】:pandas.DataFrame.agg does not work with np.std? 【发布时间】:2021-08-14 00:07:31 【问题描述】:

我正在尝试在 agg 函数为 的数据帧的 第一列 上使用 pandas.DataFrame.agg 函数>numpy.std。 我不知道为什么它适用于 numpy.mean 而不是 numpy.std? 谁能告诉我这是在什么情况下发生的。 这很奇怪@@ 以下描述了我所面临的情况。

我的来源是这样的:

print(type(dataframe))
print(dataframe.head(5))
first_col = dataframe.columns.values[0]
agg_df = dataframe.agg(first_col: [np.mean])
print(agg_df)

然后它显示这样的结果

<class 'pandas.core.frame.DataFrame'>
        ax
0   -98.06
1   -97.81
2   -96.00
3   -93.44
4   -92.94

            ax
mean   -98.06

现在我将函数 从 np.mean 更改为 np.std没有更改其他任何内容)

print(type(dataframe))
print(dataframe.head(5))
first_col = dataframe.columns.values[0]
agg_df = dataframe.agg(first_col: [np.std])
print(agg_df)

显示错误

Traceback (most recent call last):
File "C:\prediction_framework_django\predictions\predictor.py", line 112, in pre_aggregated_unseen_data
    agg_df = dataframe.agg(axis: [np.std])
File "C:\prediction_framework_django\env\lib\site-packages\pandas\core\frame.py", line 7578, in aggregate
    result, how = self._aggregate(func, axis, *args, **kwargs)
File "C:\prediction_framework_django\env\lib\site-packages\pandas\core\frame.py", line 7609, in _aggregate
    return aggregate(self, arg, *args, **kwargs)
File "C:\prediction_framework_django\env\lib\site-packages\pandas\core\aggregation.py", line 582, in aggregate
    return agg_dict_like(obj, arg, _axis), True
File "C:\prediction_framework_django\env\lib\site-packages\pandas\core\aggregation.py", line 768, in agg_dict_like
    results = key: obj._gotitem(key, ndim=1).agg(how) for key, how in arg.items()
File "C:\prediction_framework_django\env\lib\site-packages\pandas\core\aggregation.py", line 768, in <dictcomp>
    results = key: obj._gotitem(key, ndim=1).agg(how) for key, how in arg.items()
File "C:\prediction_framework_django\env\lib\site-packages\pandas\core\series.py", line 3974, in aggregate
    result, how = aggregate(self, func, *args, **kwargs)
File "C:\prediction_framework_django\env\lib\site-packages\pandas\core\aggregation.py", line 586, in aggregate
    return agg_list_like(obj, arg, _axis=_axis), None
File "C:\prediction_framework_django\env\lib\site-packages\pandas\core\aggregation.py", line 672, in agg_list_like
    raise ValueError("no results")
ValueError: no results

所以错误是 在 agg_list_like 中引发 ValueError("no results") ValueError: no results

感谢您的时间和帮助。

【问题讨论】:

【参考方案1】:

只需使用内置的 pandas:

# Note the use of string to denote the function here
df.agg(first_col: ['mean', 'std'])

# You can also simply use the following
df[first_col].mean()
df[first_col].std()

[编辑]:您得到的错误可能是由混合类型引起的。您可以通过查看df.dtypes 来检查所有 dtype 是否为浮点型。如果你有一个object,那么将有问题的(可能是空字符串)转换成你需要的任何东西,np.std 和 pandas 的内置 std 应该可以工作

【讨论】:

谢谢,我有一个数据框,其中包含 ['ax', 'ay', 'az', 'gx', 'gy', 'gz'] 我想要的每个不同的列带有一些函数的 agg,应该用这样的 dict 类型表示 'ax': ['mean', 'std'], 'ay': ['max', 'mean', 'std', 'median']这意味着对于每一列我想应用不同的功能集。我实现了这样的策略 features_dict = 'ax': ['mean', 'std'], 'ay': ['max', 'mean', 'std', 'median'] for key in features_dict : df_temp = df.agg(key: features_dict[key]) 问题是它适用于所有其他功能,但不适用于 std @@ 请用`包围你的代码 谢谢,我会检查一下,但我相信这可能不是来自数据本身,因为它与中位数、平均值等其他函数一起使用。 非常感谢,您的建议帮我解决了问题!

以上是关于pandas.DataFrame.agg 不适用于 np.std?的主要内容,如果未能解决你的问题,请参考以下文章

Tensorflow - 多 GPU 不适用于模型(输入),也不适用于计算梯度

为啥 UITableViewAutomaticDimension 不适用于 sectionFooterHeight?

为啥排序不适用于矢量?

验证不适用于 saveMany

UipanGesture 不适用于 Uiswitch

jQuery 不适用于 Express