我尝试使用掩码从我的groupby对象中进行选择,但出现无法解析的错误。熊猫:使用时间序列作为掩模进行选择
首先,我按GROUPID
df_grouped = df.groupby('groupid')
然后,我计算出的STD,最小值和最大值从每个组中我选择的口罩使用。
df_grouped_std = df_grouped.std()
df_grouped_min = df_grouped.min()
df_grouped_max = df_grouped.max()
然后我在不同的参数上创建两个遮罩。
s1 = df_grouped_std['distance']<0.05
s2 = (df_grouped_max.speed- df_grouped_min.speed) < 10
最后我结合了口罩。
sTot = s1&s2
这提供了以下错误/堆栈跟踪:
Traceback (most recent call last):
File "<ipython-input-198-b0df7aa8bb76>", line 1, in <module>
selection = df_grouped[sTot.values]
File "C:\Anaconda\lib\site-packages\pandas\core\groupby.py", line 3155, in __getitem__
% str(bad_keys)[1:-1])
KeyError: 'Columns not found: False, True'
后来我想用面膜来选择。
selection = df_grouped[sTot]
我看到,S1,S2和STOT是时间序列,也许这就是为什么我不能用它们来选择,但我不能弄清楚为什么会。我在这里错过了什么?
数据例如:
print(s1.head())
print(s2.head())
print(sTot.head())
groupid
941 True
942 True
1721 True
1722 True
2201 True
Name: distance, dtype: bool
groupid
941 True
942 True
1721 False
1722 True
2201 False
Name: speed, dtype: bool
groupid
941 True
942 True
1721 False
1722 True
2201 False
dtype: bool
你能输出s1和s2的头吗?执行'print(s1.head())'和'print(s2.head())'并复制粘贴这里的输出 –