参考:

https://blog.csdn.net/weixin_46713695/article/details/125416343

https://www.pudn.com/news/62ca63ff5f75f3409e963fdf.html

https://www.codenong.com/40433717/

常用写法

d.groupby(pd.Grouper(key='发布时间', freq='D')).sum()
d.groupby(pd.Grouper(key='发布时间', freq='D')).mean()

1.pd.Grouper

arrays = [
    ["bar", "bar", "baz", "baz", "foo", "foo", "qux", "qux"],
    ["one", "two", "one", "two", "one", "two", "one", "two"],
]
index = pd.MultiIndex.from_arrays(arrays, names=["first", "second"])
df = pd.DataFrame({"A": [1, 1, 1, 1, 2, 2, 3, 3], "B": np.arange(8)}, index=index)
df
Out[53]: 
              A  B
first second      
bar   one     1  0
      two     1  1
baz   one     1  2
      two     1  3
foo   one     2  4
      two     2  5
qux   one     3  6
      two     3  7
df.groupby([pd.Grouper(level=1), "A"]).sum() #level=1等价于level="second"
Out[54]: 
          B
second A   
one    1  2
       2  4
       3  6
two    1  4
       2  5
       3  7
df.groupby(["second", "A"]).sum()
Out[56]: 
          B
second A   
one    1  2
       2  4
       3  6
two    1  4
       2  5
       3  7
groups = data.groupby(pd.Grouper(key='time_col', freq='10min'))
for col in target_cols:  # 逐列计算
    t = groups[col].apply(lambda x: x - x.mean())
    data[col] = t.values

2.时间分组

时间序列可以直接作为index,或者有一列是时间序列,差别不是很大。 这里仅仅演示,某一列为时间序列。

为 A 新增一列【生日】,由于分隔符 “/” 的问题,我们查看列属性,【生日】的属性并不是日期类型

(1) 按照【生日】的【年份】进行分组,看看有多少人是同龄?

A["生日"] = pd.to_datetime(A["生日"],format ="%Y/%m/%d")  # 转化为时间格式

A.groupby(A["生日"].apply(lambda x:x.year)).count()  # 按照【生日】的【年份】分组

(2) 同一年作为一个小组,小组内生日靠前的那一位作为小队长:

A.sort_values("生日", inplace=True) # 按时间排序

A.groupby(A["生日"].apply(lambda x:x.year),as_index=False).first()

as_index=False  # 保持原来的数据索引结果不变

first() 保留第一个数据

Tail(n=1) 保留最后n个数据

再进一步:

(3) 想要找到哪个月只有一个人过生日

A.groupby(A["生日"].apply(lambda x:x.month),as_index=False) # 到这里是按月分组

A.groupby(A["生日"].apply(lambda x:x.month),as_index=False).filter(lambda x: len(x)==1)
  • filter() 对分组进行过滤,保留满足()条件的分组
  • 用 first(),tail()截取每组前后几个数据
  • 用 apply()对每组进行(自定义)函数运算
  • 用 filter()选取满足特定条件的分组