下面是一个示例代码,展示了如何使用Pandas创建一个新的数据框架,按组显示前N个和后N个值。
首先,我们导入必要的库:
import pandas as pd
接下来,创建一个示例数据框架:
data = {'Group': ['A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C'],
'Value': [1, 2, 3, 4, 5, 6, 7, 8, 9]}
df = pd.DataFrame(data)
数据框架如下所示:
Group Value
0 A 1
1 A 2
2 A 3
3 B 4
4 B 5
5 B 6
6 C 7
7 C 8
8 C 9
现在,我们可以使用groupby
函数按组对数据框架进行分组,并使用apply
函数在每个组上应用自定义函数。在自定义函数中,我们可以使用head
和tail
函数选择前N个和后N个值,并使用concat
函数将它们连接成一个新的数据框架。
下面是完整的代码示例:
import pandas as pd
data = {'Group': ['A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C'],
'Value': [1, 2, 3, 4, 5, 6, 7, 8, 9]}
df = pd.DataFrame(data)
def get_top_bottom_n(group, n):
top_n = group.head(n)
bottom_n = group.tail(n)
return pd.concat([top_n, bottom_n])
N = 2
new_df = df.groupby('Group').apply(get_top_bottom_n, n=N).reset_index(drop=True)
新的数据框架new_df
如下所示:
Group Value
0 A 1
1 A 2
2 A 2
3 A 3
4 B 4
5 B 5
6 B 5
7 B 6
8 C 7
9 C 8
10 C 8
11 C 9
在这个示例中,我们选择了每个组的前2个和后2个值,所以新的数据框架中有12个行。
上一篇:按组显示非分类列的未观察到的值
下一篇:按组显示最近3条SQL记录