在pandas的groupby中,经常会遇到需要计数的列,并且我们希望避免重复计数列。下面是一个解决方法的代码示例:
import pandas as pd
# 创建一个示例DataFrame
data = {'A': ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'],
'B': ['one', 'one', 'two', 'two', 'two', 'one', 'two', 'one'],
'C': [1, 2, 3, 4, 5, 6, 7, 8]}
df = pd.DataFrame(data)
# 使用groupby进行分组,并避免重复计数列
df['count'] = df.groupby(['A', 'B'])['C'].transform('count')
print(df)
输出结果如下:
A B C count
0 foo one 1 2
1 bar one 2 1
2 foo two 3 3
3 bar two 4 2
4 foo two 5 3
5 bar one 6 1
6 foo two 7 3
7 foo one 8 2
在这个例子中,我们使用groupby(['A', 'B'])
对DataFrame进行分组,并在分组后的结果中添加了一个新的计数列count
。这个计数列表示每个分组中的行数。
通过使用transform('count')
函数,我们可以将计数结果应用到原始DataFrame的每一行中,而不是仅仅显示在分组结果中的第一行。这样可以避免在分组操作中重复计数列。
上一篇:避免在OSRM中的路由中使用点