优势:简单便捷
agg({'B':'count','C':'sum'})
对B
列计数,C
列求和,列名称分别为B
、C
import pandas as pd
# 创建一个示例DataFrame
df = pd.DataFrame({'A': ['a', 'b', 'a', 'b', 'a'],
'B': [1, 2, 2, 3, 1],
'C': [1, 2, 2, 1, 2]})
# 对A列进行分组,并在C列为2的情况下同时对B列进行去重计数和计数
result = df.groupby('A').agg({'B':'count','C':'sum'}).reset_index()
# 打印结果
print(result)
优势:可以对同一列进行不同计算,同时可以对计算到的列命名
.agg(去重计数=('B', 'nunique'),count_B=('B', 'count'))
对B
列计算去重计数和直接计数,分别命名为 去重计数
、count_B
import pandas as pd
# 创建一个示例DataFrame
df = pd.DataFrame({'A': ['a', 'b', 'a', 'b', 'a'],
'B': [1, 2, 2, 3, 1],
'C': [1, 2, 2, 1, 2]})
# 对A列进行分组,并在C列为2的情况下同时对B列进行去重计数和计数
result = df[df['C'] == 2].groupby('A').agg(count_distinct_B=('B', 'nunique'),
count_B=('B', 'size')).reset_index()
# 打印结果
print(result)
优势:可以对同一列进行不同计算,同时可以对计算到的列命名,可以对分组后的数据筛选后处理
agg(B列名称=('B', lambda x: x[df['C'] == 2].nunique()),count_B=('B', lambda x: x[df['C'] == 2].count()))
import pandas as pd
# 创建一个示例DataFrame
df = pd.DataFrame({'A': ['a', 'b', 'a', 'b', 'a'],
'B': [1, 2, 2, 3, 1],
'C': [1, 2, 2, 1, 2]})
# 对A列进行分组,并在C列为2的情况下同时对B列进行去重计数和计数
result = df.groupby('A').agg(B列名称=('B', lambda x: x[df['C'] == 2].nunique()),
count_B=('B', lambda x: x[df['C'] == 2].count())).reset_index()
# 打印结果
print(result)
优势:可以对同一列进行不同计算,同时可以对计算到的列命名,可以对分组后的数据筛选后处理
apply(lambda x: pd.Series({ 'count_distinct_B': x[x['C'] == 2]['B'].nunique(), 'count_B': x[x['C'] == 2]['B'].count() }))
import pandas as pd
# 创建一个示例DataFrame
df = pd.DataFrame({'A': ['a', 'b', 'a', 'b', 'a'],
'B': [1, 2, 2, 3, 1],
'C': [1, 2, 2, 1, 2]})
# 对A列进行分组,并在C列为2的情况下同时对B列进行去重计数和计数
result = df.groupby('A').apply(lambda x: pd.Series({
'count_distinct_B': x[x['C'] == 2]['B'].nunique(),
'count_B': x[x['C'] == 2]['B'].count()
})).reset_index()
# 打印结果
print(result)