- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个系列,其中包含几年中按天数索引的标量值。有几年没有数据。
2014-10-07 5036.883410
2013-10-11 5007.515654
2013-10-27 5020.184053
2014-09-12 5082.379630
2014-10-14 5032.669801
2014-10-30 5033.276159
2016-10-03 5046.921912
2016-10-19 5141.861889
2017-10-06 5266.138810
由此我想得到1.每年的最大值2. 每年最高限额的日期对于那些没有数据的年份,应该有一个nan。
要解决 1. 以下工作:
import pandas as pd
import numpy as np
data= pd.Series( index=pd.DatetimeIndex(['2014-10-07', '2013-10-11', '2013-10-27', '2014-09-12', '2014-10-14', '2014-10-30', '2016-10-03', '2016-10-19', '2017-10-06'], dtype='datetime64[ns]', name='time', freq=None), data=np.array([5036.88341035, 5007.51565355, 5020.18405295, 5082.37963023, 5032.66980146, 5033.27615931, 5046.92191246, 5141.86188915, 5266.1388102 ]))
# get maximum of each year
data.resample('A').max()
但是,我尝试了不同的选项来获取最大日期的索引,但它们都失败了:
data.resample('A').idxmax()
这会引发以下属性错误:
AttributeError: 'DatetimeIndexResampler' object has no attribute 'idxmax'
然后我尝试了以下方法:
data.groupby(pd.TimeGrouper('A')).idxmax()
但这给出了一个没有指定的 ValueError。然后我找到了this解决方法:
data.groupby(pd.TimeGrouper('A')).agg( lambda x : x.idxmax() )
但对于时间分组的数据,我没有穿任何一件:
ValueError: attempt to get argmax of an empty sequence
显然报告了bug尚未修复,建议的分类数据解决方法似乎不适用于时间分组/重采样数据。
谁能为这种情况提供合适的解决方法,或者针对上述问题提供完全不同(且有效)的解决方法?
提前致谢!
最佳答案
问题是您没有 2015 年的记录,但是创建了 2015 年的时间段,因为它在您的年份范围内。您需要手动处理这种情况:
data.resample('A').agg(
lambda x : np.nan if x.count() == 0 else x.idxmax()
)
输出:
time
2013-12-31 2013-10-27
2014-12-31 2014-09-12
2015-12-31 NaT
2016-12-31 2016-10-19
2017-12-31 2017-10-06
Freq: A-DEC, dtype: datetime64[ns]
关于python - Pandas idxmax() 不适用于按包含 NaN 的时间段分组的系列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53081877/
问候,我有一个索引从 0 到 00.6279999999999999 的 df。 我使用 idxmax() 查找一列中最大变量的索引 - df[Column A]。假设索引是 0.5579999999
我正在尝试查找多索引 Pandas 数据帧中多列中最大值的索引。 Kommune Upplands Vallentuna... Kiruna Year Party 19
考虑 pd.Series s import pandas as pd import numpy as np np.random.seed([3,1415]) s = pd.Series(np.rand
我有一个如下所示的数据框: column_1 column_2 2 3 6 4 5 5 . . . 我想为上述数据框的每一行返回该行中
我有一个如下所示的数据框: column_1 column_2 2 3 6 4 5 5 . . . 我想为上述数据框的每一行返回该行中
我有一个由 3 列和 n 行组成的数据框。 分组前我的数据框看起来像 Index Max_Mass (kg/m) Max_Diameter (m) 1 10
我正在尝试计算夏季金牌数和冬季金牌数相对于金牌总数的最大差异。问题是我只需要考虑在夏季和冬季都至少赢得 1 枚金牌的国家。 Gold: Count of summer gold medals Gold
我有一个这样的数据框: A B C 0 1 2 1 1 3 -8 10 2 10 3 -20 3 50 7 1 我想根据每列中最大绝对值的索引重新排列它的列。
这个问题在这里已经有了答案: Pandas: Find index of the row with second highest value (2 个答案) 关闭 4 年前。 我有一个以 Count
这个问题在这里已经有了答案: Select the max row per group - pandas performance issue (2 个答案) 关闭 4 年前。 import time
我有一个看起来像这样的系列: delivery 2007-04-26 706 23 2007-04-27 705 10
我有一个包含一些财务数据的 python DataFrame,我正在尝试为其创建一些技术指标。我想弄清楚如何使用移动窗口函数来加速这个过程,而不是逐个元素地进行。对于每个索引,我想返回最近 30 天的
我有一个必须按三个级别分组的 DataFrame,然后返回最高值。每天每个唯一值都有一个返回,我想找到最高返回和细节。 data.groupby(['Company','Product','Indus
我正在尝试使用 df.loc[df.groupby(keys)['column'].idxmax()] 按最大值从组中选择行。 但是,我发现 df.groupby(keys)['column'].id
您好,我正在尝试了解 pd.DataFrame.idxmax 的效率,看看是否值得用可能更高效的自定义算法(例如,使用二进制搜索)替换它。 我想了解此方法背后的算法或至少了解其复杂性,但到目前为止我还
我有一个数据框,其中有两列,id 和 date。 df = pd.DataFrame([[1, '2019-05-20'], [1, '2019-05-20'], [1, '2018-04-23'],
我有一个数据框,其中有两列,id 和 date。 df = pd.DataFrame([[1, '2019-05-20'], [1, '2019-05-20'], [1, '2018-04-23'],
这是我的代码 from pandas import DataFrame, Series import pandas as pd import numpy as np income = DataFram
我发现 idxmax() 在 argmax() 不起作用的情况下有效(例如在整个数据帧上),但是在某些情况下我需要 argmax()?如果不是,我会把它从我的脑海中抹去。 最佳答案 有区别。 pd.D
Pandas dataframe.idxmax()函数返回请求轴上第一次出现最大值的索引。 有没有办法返回前 N 次出现的索引? 有问题的行: df2 = df.loc[df.groupby(['co
我是一名优秀的程序员,十分优秀!