[英]Manipulate pandas.DataFrame with multiple criterias
例如我有一个数据框:
df = pd.DataFrame({'Value_Bucket': [5, 5, 5, 10, 10, 10],
'DayofWeek': [1, 1, 3, 2, 4, 2],
'Hour_Bucket': [1, 5, 7, 4, 3, 12],
'Values': [1, 1.5, 2, 3, 5, 3]})
实际数据集相当大(5000行以上)。 我想在“ Value_Bucket” = 5以及“ DayofWeek”和“ Hour_Bucket”的每个可能组合上对“ Values”执行功能。
本质上,数据将被分组到一个包含24行(Hour_Bucket)和7列(DayofWeek)的表中,并且每个单元格都填充有函数的结果(例如,取平均值)。 我可以对1个条件使用groupby函数,有人可以解释如何对两个条件进行组合并在表格中列出结果吗?
query
子集 groupby
unstack
df.query('Value_Bucket == 5').groupby(
['Hour_Bucket', 'DayofWeek']).Values.mean().unstack()
DayofWeek 1 3
Hour_Bucket
1 1.0 NaN
5 1.5 NaN
7 NaN 2.0
如果要用零代替NaN
df.query('Value_Bucket == 5').groupby(
['Hour_Bucket', 'DayofWeek']).Values.mean().unstack(fill_value=0)
DayofWeek 1 3
Hour_Bucket
1 1.0 0.0
5 1.5 0.0
7 0.0 2.0
对我而言,透视表似乎比groupby与unstack配对更自然,尽管它们做的完全相同。
pd.pivot_table(data=df.query('Value_Bucket == 5'),
index='Hour_Bucket',
columns='DayofWeek',
values='Values',
aggfunc='mean',
fill_value=0)
产量
DayofWeek 1 3
Hour_Bucket
1 1.0 0
5 1.5 0
7 0.0 2
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.