我有一个数据帧(df_temp),如下所示:
ID1 ID2
0 A X
1 A X
2 A Y
3 A Y
4 A Z
5 B L
6 B L
我需要的是添加一个列,显示每个ID1的ID2唯一值的累计数量,所以类似
ID1 ID2 CumUniqueIDs
0 A X 1
1 A X 1
2 A Y 2
3 A Y 2
4 A Z 3
5 B L 1
6 B L 1
我试过了:
dfl_temp['CumUniqueIDs'] = dfl_temp.groupby(by=[ID1])[ID2].nunique().cumsum()+1
但这只是用NaN填充CumUniqueIDs。
不确定我在这里做错了什么!任何帮助非常感谢!
答案 0 :(得分:5)
您可以使用groupby()
+ transform()
+ factorize()
:
In [12]: df['CumUniqueIDs'] = df.groupby('ID1')['ID2'].transform(lambda x: pd.factorize(x)[0]+1)
In [13]: df
Out[13]:
ID1 ID2 CumUniqueIDs
0 A X 1
1 A X 1
2 A Y 2
3 A Y 2
4 A Z 3
5 B L 1
6 B L 1
答案 1 :(得分:3)
使用else {
windowHeight = $(window).innerHeight();
$('.nanoContainer, .flexAligner, .home .intro').css('min-height', (windowHeight - 88));
category
分配后
df.groupby(['ID1']).ID2.apply(lambda x : x.astype('category').cat.codes.add(1))
Out[551]:
0 1
1 1
2 2
3 2
4 3
5 1
6 1
Name: ID2, dtype: int8