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 不适用于模型(输入),也不适用于计算梯度