如何在Pandas中获取DateTimeIndex对应的DataFrame值?
解决DateTimeIndex索引DataFrame获取idxmax对应值的问题
针对你给出的代码场景,你遇到的问题是idx = df_limited.idxmax()得到的是最大值对应的Timestamp索引,但之前的方法要么返回Series/DataFrame,要么因类型不匹配报错,以下是正确的解决方式:
现有方法无效的原因
df_limited.loc[idx]:因为df_limited是单列DataFrame,这行代码返回的是整行的Series,而非单个数值。df_limited.iloc[idx]:iloc只接受整数位置参数,而idx是Timestamp类型,类型不匹配导致报错。df_limited[(df_limited.index == idx)]:返回的是仅含目标行的DataFrame,不是单个值。
正确获取值的方法
方法1:从loc返回的Series中提取数值
loc[idx]返回目标行的Series,只需提取第一个元素即可(因是单列):
max_val = df_limited.loc[idx].iloc[0] # 或者用values直接取数组第一个元素 max_val = df_limited.loc[idx].values[0]
方法2:用at方法直接定位单元格(更高效)
at是针对单个单元格的快速访问方法,需指定索引和列名:
# 取DataFrame的唯一列名 col_name = df_limited.columns[0] max_val = df_limited.at[idx, col_name]
方法3:直接获取最大值(无需先获取idx)
如果仅需拿到最大值,不需要先获取索引,可直接用max():
max_val = df_limited.max().values[0]
内容的提问来源于stack exchange,提问作者Saeed
相关产品推荐
相关产品推荐

