【发布时间】:2018-09-07 18:26:20
【问题描述】:
所以我有一个 pivot_table,基本上是一个多级 df,我想通过几个参数进行过滤。
列数据类型:
Report object
Owner object
Description object
TimeToRun object
FacilityName object
Base Report object
pd 函数:
pv=pd.pivot_table(test, index = ['TimeToRun'], columns = ['FacilityName'], values = ['Base Report'], aggfunc='count', fill_value=0)
pv.columns
MultiIndex(levels=[[u'Base Report'], [u'Roseville', u'Sacramento', u'South Sacramento']],
labels=[[0, 0, 0], [0, 1, 2]],
names=[None, u'FacName'])
我的事情是我想通过二级值过滤生成的 df,我想过滤它以便索引任何大于 2 的值。到目前为止,这是我的解决方案,但这在动态情况下不起作用,第二级 [u'Roseville', u'Sacramento', u'South Sacramento'] 中的值不同(列的长度)。
这是我的查询:
query = pv[(pv[pv.columns[0]]>2) | (pv[pv.columns[1]]>2)| (pv[pv.columns[2]]>2)]
这是在 excel 中呈现的 pivot_table 的样子:
Base Report
FacilityName Santa Clara Santa Teresa
TimeToRun
2018-03-28 07:00:00 4 0
2018-03-28 07:01:00 4 0
2018-03-28 07:02:00 6 0
2018-03-28 07:03:00 5 0
2018-03-28 09:05:00 0 3
2018-03-28 09:15:00 0 6
2018-03-28 14:45:00 3 0
2018-03-28 17:15:00 0 5
2018-03-28 19:10:00 0 3
2018-03-28 19:15:00 0 4
我相信有更好的方法,请告诉我如何。谢谢
【问题讨论】:
标签: python pandas pandas-groupby