python - 为什么熊猫需要重塑我的布尔索引,我该如何修复它以避免警告?
问题描述
背景
我有两个带时间戳的数据帧(索引是 id)。我想获取时间戳相差 5 分钟的所有 id。
代码
time_delta = abs(df2.time - df1.time).dt.total_seconds()
ids_out_of_range = df1[time_delta > 300].index
这给了我想要的 id,所以它是工作代码。
问题
像许多人一样,我面临这样的警告:
file.py:33: UserWarning: Boolean Series key will be reindexed to match DataFrame index.
ids_out_of_range = df1[time_delta > 300].index
大多数解释都集中在索引的“长度”与数据帧的“长度”不同。但:
+(Pdb) time_delta.shape
(176,)
+(Pdb) df1.shape
(176, 1)
+(Pdb) sorted(time_delta.index.values.tolist()) == sorted(df1.index.values.tolist())
True
形状是相同的,只是一个是系列,另一个是数据帧。指数(看起来)是一样的;也许订购是问题?他们没有比较平等sorted
。
(我试过time_delta
用 DataFrame 包装,但无济于事。)
从长远来看,我希望这个警告消失(而不是2>/dev/null
,谢谢)。这是我的脚本输出中的视觉混乱,而且,这是一个警告——所以理论上我应该注意它。
问题
- 我在做什么“错误”,因为尺寸似乎是正确的?
- 如何修复 (1) 以便避免此警告?
解决方案
以下解决了我的问题:
df1.sort_index(inplace=True)
df2.sort_index(inplace=True)
time_delta.sort_index(inplace=True)
这使索引可以完美对齐,因此它们彼此之间的顺序一定不同。
推荐阅读
- javascript - 在完整日历中的第一个日期未显示重复事件
- html - 表格中的 TH 是否允许使用标题?
- c - 使用带有联合的类型双关语的问题
- python - 如何使用 PyTorch 并行化 CNN 对图像的评估
- r - 将视觉元素(图标)添加到 ggpplot 标签
- ckeditor - ckeditor 自动在视觉上调整拖放图像的大小
- java - Azure Active Directory 的 Spring Security Oauth2
- sql - 在 SQL Server 中将 Varbinary 转换为 PDF
- dkim - 我可以只为一台特定的服务器配置 DKIM 吗?
- extjs - EXTJS:Ext.widget 和 Ext.create 有什么区别?