# python group操作

By [KeepLearning](https://paragraph.com/@keeplearning-2) · 2022-11-28

---

1, df.groupby(‘列名‘).size 计算每个group的size

2, .get\_group(‘行名‘) 取

3， .describe()

4, df.groupby(‘symbol’).head()

5, .tail()/.first()/.last()/.nth(n)取前几行数据

前面集中都是将groupby对象，也就是symbol设置为index, 如果不想设置symbol为index,则按照下面方式

df.groupby(‘symbol’,as\_index = False).nth(2)

取groupby以后，可以取一部分变量就行计算

把相同symbol的行取出来，这些行对应不同的时间，将这些行的close列做平均，得出close在这段时间内的均值。同理对于volume.

应用场景：所有的symbol在一个表里，我们需要知道同一个symbol在某一列的均值。

df.groupby(‘symbol’)\[‘close‘, ‘volume‘\].mean()

df.groupby(‘symbol’)\[‘close‘, ‘volume‘\].max()

df.groupby(‘symbol’)\[‘close‘, ‘volume‘\].min()

计算每个group的加总
============

print(df.groupby('symbol')\['volume'\].sum())
=============================================

计算该数据在每个group中的排名
=================

print(df.groupby('candle\_begin\_time')\['volume'\].rank())
===========================================================

print(df.groupby('candle\_begin\_time')\['volume'\].rank(pct=True))
===================================================================

也可以同时用多个变量来进行group，将这些变量的值都相同的行
===============================

df\['candle\_begin\_time'\] = pd.to\_datetime(df\['candle\_begin\_time'\])
==========================================================================

df.loc\[df\['candle\_begin\_time'\].dt.hour < 12, '时间'\] = '上午'
===============================================================

df\['时间'\].fillna(value='下午', inplace=True)
===========================================

print(df.groupby(\['symbol', '时间'\]).size())
============================================

我们之前讲过的resample、fillna、apply等常见操作，在group里面都可以进行。
================================================

这些操作需要大家有一定的积累，若直接在group上进行这些操作不熟练，可以使用已下的方式。
=============================================

遍历group，对每个group进行单独操作，然后将这些group合并起来。
======================================

语法：for key, group in df.groupby('列名'):
======================================

for symbol, group in df.groupby('symbol'):
==========================================

print(symbol)
=============

print(group)
============

\# 以下可以对各个group进行任意操作。
======================

\# group.fillna()
=================

\# group.apply()
================

\# 操作完之后，将这些group再append起来
==========================

在一开始不熟练的时候，可以多用遍历每个group的方式
===========================

---

*Originally published on [KeepLearning](https://paragraph.com/@keeplearning-2/python-group)*
