chi*_*tra 3 python dataframe pandas
我有一个数据框,例如
Groups SP Letters
G1 SP1 A
G1 SP1 Z
G1 SP1 A
G1 SP2 X
G1 SP3 X
G1 SP4 B
G2 SP2 A
G2 SP5 B
G2 SP3 X
G2 SP23 A
Run Code Online (Sandbox Code Playgroud)
我想添加一列( ),它是每个列表中唯一值Nb_column的计数SPGroupsLettersthe_list=['A','B']
在这里我应该得到:
Groups SP Letters Nb_column
G1 SP1 A 2
G1 SP1 Z 2
G1 SP1 A 2
G1 SP2 X 2
G1 SP3 X 2
G1 SP4 B 2
G2 SP2 A 3
G2 SP5 B 3
G2 SP3 X 3
G2 SP23 A 3
Run Code Online (Sandbox Code Playgroud)
在哪里
SP(SP1、SP4),其中一个Letters代表the_listG1。和SP (SP2、SP5和SP23),其中一个Letters表示the_listG2。有人对 pandas 有想法吗?
您可以在 SP 的屏蔽版本上使用groupby+ transform+ nunique(默认情况下,NaN 不被计算在内nunique):
df['Nb_columns'] = (df['SP'].where(df['Letters'].isin(the_list))
.groupby(df['Groups']).transform('nunique')
)
Run Code Online (Sandbox Code Playgroud)
输出:
Groups SP Letters Nb_columns
0 G1 SP1 A 2
1 G1 SP1 Z 2
2 G1 SP1 A 2
3 G1 SP2 X 2
4 G1 SP3 X 2
5 G1 SP4 B 2
6 G2 SP2 A 3
7 G2 SP5 B 3
8 G2 SP3 X 3
9 G2 SP23 A 3
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
95 次 |
| 最近记录: |