遍历字典 - FutureWarning:不推荐对具有不存在键的非单调 DatetimeIndexes 进行基于值的部分切片

Posted

技术标签:

【中文标题】遍历字典 - FutureWarning:不推荐对具有不存在键的非单调 DatetimeIndexes 进行基于值的部分切片【英文标题】:Iterating through dictionaries - FutureWarning: Value based partial slicing on non-monotonic DatetimeIndexes with non-existing keys is deprecated 【发布时间】:2021-05-12 23:02:42 【问题描述】:

在 R 语言中使用了很长时间后,我正在转换回 Python,但我不记得存储多个参与者的时间序列的最佳方法。一些搜索建议的字典很好,但是当我遍历字典时,我收到了以下警告几次: indexing.py:1069: FutureWarning: Value based partial slicing on non-monotonic DatetimeIndexes with non-existing keys is deprecated and will raise a KeyError in a future Version. return self._getitem_tuple_same_dim(tup)

我应该做些什么不同的事情?非常感谢!

df_motion =

datetime x y z
2020-07-10 13:49:11.429 0.213234 -0.069581 -10.066122
2020-07-10 13:49:11.440 0.219219 -0.047585 -10.085126
2020-07-10 13:49:11.450 0.319219 -0.057585 -10.185357
df_motion_dict[1] = df_motion # and other pandas dataframes of motion signals where the keys are a list with missing numbers, for example 1,3,4,10. 
audience = 
for k,v in df_motion_dict.items():
    df_motion = df_motion_dict[k]
    df_motion = df_motion.loc['2020-07-10 13:55' : '2020-07-10 14:25.5', :]
    if len(df_motion)>0: # remove any dataframes not containing data
        audience[k]=df_motion    

【问题讨论】:

【参考方案1】:

我在这里遇到了同样的问题。 我搜索了 pandas 文档,但找不到替代方法,也找不到任何关于它为什么会被弃用的解释。 无论如何,我可以通过在查询之前对索引进行排序来消除警告。

试试这个:

df_motion = df_motion.sort_index().loc['2020-07-10 13:55' : '2020-07-10 14:25.5', :] 

我希望这也适用于你。

【讨论】:

谢谢罗伯托!这也为我消除了错误。干杯!

以上是关于遍历字典 - FutureWarning:不推荐对具有不存在键的非单调 DatetimeIndexes 进行基于值的部分切片的主要内容,如果未能解决你的问题,请参考以下文章

FutureWarning:不推荐使用非元组序列进行多维索引,使用 `arr[tuple(seq)]`

FutureWarning:不推荐将 issubdtype 的第二个参数从“float”转换为“np.floating”

timedelta64[ns] -> FutureWarning:不推荐传递 timedelta64-dtype 数据,将在未来版本中引发 TypeError

FutureWarning:不推荐使用非元组序列进行多维索引,使用 `arr[tuple(seq)]` 而不是 `arr[seq]`

pandas 错误提醒:FutureWarning: elementwise comparison failed;

Pandas 使用 0.21.0 对 FutureWarning 进行切片