spe*_*rum 0 python group-by dataframe pandas pandas-groupby
我有 2 列 - _a,_b。
import numpy as np
import pandas as pd
df = pd.DataFrame({'_a':[1,1,1,2,2,3,3],'_b':[3,4,5,3,3,3,9], 'a_b_3':[3,3,3,1,1,2,2]})
df
_a _b a_b_3
0 1 3 3
1 1 4 3
2 1 5 3
3 2 3 1
4 2 3 1
5 3 3 2
6 3 9 2
Run Code Online (Sandbox Code Playgroud)
我需要使用 pandas 的 groupby 创建列 a_b_3 (来自列“_b”的唯一计数)。先感谢您。
看起来你想要transform+ nunique;
df['a_b_3'] = df.groupby('_a')['_b'].transform('nunique')
df
_a _b a_b_3
0 1 3 3
1 1 4 3
2 1 5 3
3 2 3 1
4 2 3 1
5 3 3 2
6 3 9 2
Run Code Online (Sandbox Code Playgroud)
这实际上是groupby++ :nuniquemap
v = df.groupby('_a')['_b'].nunique()
df['a_b_3'] = df['_a'].map(v)
df
_a _b a_b_3
0 1 3 3
1 1 4 3
2 1 5 3
3 2 3 1
4 2 3 1
5 3 3 2
6 3 9 2
Run Code Online (Sandbox Code Playgroud)