Python 使用Pandas变换计算不同的计数
假设我有以下数据帧:Python 使用Pandas变换计算不同的计数,python,pandas,numpy,Python,Pandas,Numpy,假设我有以下数据帧: df2 = pd.DataFrame({'A' : ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'], 'B' : ['one', 'one', 'two', 'three', 'two', 'two', 'one', 'three'],
df2 = pd.DataFrame({'A' : ['foo', 'bar', 'foo', 'bar',
'foo', 'bar', 'foo', 'foo'],
'B' : ['one', 'one', 'two', 'three',
'two', 'two', 'one', 'three'],
'C' : np.random.randn(8), 'D' : np.random.randn(8)})
df2.head()
如下所示:
A B C D
0 foo one 0.613774 0.783539
1 bar one -0.937659 -0.913213
2 foo two -1.568537 1.569597
3 bar three -0.353449 1.108789
4 foo two -1.769544 0.530466
df2['counts'] = df2.groupby('A')['B'].transform(np.size)
我知道,如果我想创建另一列,即A列中每个值的记录计数,我可以执行以下操作:
A B C D
0 foo one 0.613774 0.783539
1 bar one -0.937659 -0.913213
2 foo two -1.568537 1.569597
3 bar three -0.353449 1.108789
4 foo two -1.769544 0.530466
df2['counts'] = df2.groupby('A')['B'].transform(np.size)
但是,假设我只想计算由A分组的B的唯一元素?如果我想将数据帧缩减为2列(一列表示“foo”,一列表示“bar”),我知道如何做到这一点,但如何使用transform?使用
GroupBy.transform.nunique
:
df2['counts'] = df2.groupby('A')['B'].transform('nunique')
使用
GroupBy.transform.nunique
:
df2['counts'] = df2.groupby('A')['B'].transform('nunique')
这回答了你的问题吗?找不到这个@ansev的对象,否则会closed@ansev这是一个稍有不同的问题。这是否回答了你的问题?找不到这个@ansev的对象,否则会closed@ansev这是一个稍微不同的问题