我想在对数据框进行分组后进行过滤,但是出现了关键字错误。以下是一些示例代码:
df = pd.DataFrame([
[0, 1, 'm', 5.0], [0, 1, 'm', -7.0],[0, 1, 'm', 9.0],[0, 1, 'm', 32.0],[0, 1, 'm', -11.0],
[0, 6, 'm', -12.0], [0, 6, 'm', 15.0],[0, 6, 'm', -16.0],[0, 6, 'm', -3.0],[0, 6, 'm', 21.0],
[0, 12, 'm', 15.0], [0, 12, 'm', 51.0],[0, 12, 'm', 4.0],[0, 12, 'm', 3.0],[0, 12, 'm', 1.0],
[1, 1, 'm', 5.0], [1, 1, 'm', -7.0],[1, 1, 'm', 9.0],[1, 1, 'm', 32.0],[1, 1, 'm', -11.0],
[1, 6, 'm', -12.0], [1, 6, 'm', 15.0],[1, 6, 'm', -16.0],[1, 6, 'm', -3.0],[1, 6, 'm', 21.0],
[1, 12, 'm', 15.0], [1, 12, 'm', 51.0],[1, 12, 'm', 4.0],[1, 12, 'm', 3.0],[1, 12, 'm', 1.0]
],
columns=['id', 'timeperiod', 'timeperiodtype', 'value'])
df['good'] = df['value'].apply(lambda x: 1 if x>0 else 0)
print(df)
print(df[df['timeperiod']>6])
df = df[['id', 'timeperiod','timeperiodtype','good']][df['timeperiod']>0].groupby(['id','timeperiod','timeperiodtype']).mean()
print(df[df['timeperiod']>6])
我希望避免使用reset_index,因为最终的代码中将有几个类似形状的数据框需要聚合/合并/连接。
我相信我一定忽略了什么显而易见的东西。
如何使用列名来过滤分组后的数据框?
谢谢。
.groupby()
命令之后,列名为"timeperiod"的列成为了索引。尝试使用print(df)
而不是print(df[df['timeperiod']>6])
,一切都会正常的。 - undefinedprint(df.query('timeperiod > 6'))
。 - undefined