【发布时间】:2016-12-07 21:04:49
【问题描述】:
我尝试使用蒙版从我的 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的head吗?执行
print(s1.head())和print(s2.head())并在此处复制并粘贴输出