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是一个任意数!