繁体   English   中英

使用多个条件处理pandas.DataFrame

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM