为什么panda需要重塑我的布尔索引,以及我如何修复它以避免警告



背景

我有两个带有时间戳的id的DataFrames(索引就是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

形状是相同的,只是一个是系列,另一个是DataFrame。指数(看起来(是相同的;也许订购是问题所在?在没有CCD_ 1的情况下,它们的比较不相等。

(我尝试过将time_delta封装在DataFrame中,但没有成功。(

从长远来看,我希望这个警告消失(而不是2>/dev/null,谢谢(。这是我的脚本输出中的视觉混乱,嗯,这是一个警告——所以理论上我应该注意它

问题

  1. 既然尺寸似乎合适,我收到这个警告是因为我做错了什么
  2. 如何修复(1(以避免此警告
  1. 警告是说您的time_delta索引与df索引不同。但当我试图重现警告时,它没有出现。我用的是熊猫0.25.1。因此,如果您使用的是不同的版本,可能会有警告。

  2. 有关抑制警告,请参阅本页

以下修复了我的问题:

df1.sort_index(inplace=True)
df2.sort_index(inplace=True)
time_delta.sort_index(inplace=True)

这使得索引能够完美对齐,因此它们之间的顺序一定不相同。

相关内容

最新更新