Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/328.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 熊猫群居在哪里_Python_Pandas_Group By_Where Clause - Fatal编程技术网

Python 熊猫群居在哪里

Python 熊猫群居在哪里,python,pandas,group-by,where-clause,Python,Pandas,Group By,Where Clause,我有这样一个数据帧: col1 col2 0 a 100 1 a 200 2 a 150 3 b 1000 4 c 400 5 c 200 def aggregator(col1, col2): return col1+col2 我要做的是按col1分组并计算出现的次数,如果count等于或大于2,则计算这些行的col2平均值,如果不应用另一个函数。输出应为: col1 mean 0 a 150 1

我有这样一个数据帧:

    col1 col2
0    a   100
1    a   200
2    a   150
3    b   1000
4    c   400
5    c   200
def aggregator(col1, col2):
    return col1+col2
我要做的是按col1分组并计算出现的次数,如果count等于或大于2,则计算这些行的col2平均值,如果不应用另一个函数。输出应为:

    col1 mean
0    a   150
1    b   whatever aggregator function returns 
2    c   300
我在这里使用了@ansev solution,但我不想用NaN替换它们,实际上我想用另一个函数返回的值替换它,如下所示:

    col1 col2
0    a   100
1    a   200
2    a   150
3    b   1000
4    c   400
5    c   200
def aggregator(col1, col2):
    return col1+col2

请记住,实际的聚合器函数更复杂,并且依赖于其他表,这只是为了简化问题。

我不确定这是否是您需要的,但您可以解决应用问题:

def aggregator(x):
    if len(x)==1:
        return pd.Series( (x['col1'] + x['col2'].astype(str)).values)
    else: return pd.Series(x['col2'].mean())

df.groupby('col1').apply(aggregator)
输出:

          0
col1       
a       150
b     b1000
c       300

你的问题没有多大意义。如果计数小于2,那么有什么可聚合的?好的捕获!2是一个任意数!