Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用Pandas变换计算不同的计数_Python_Pandas_Numpy - Fatal编程技术网

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这是一个稍微不同的问题