在pycharm中执行以下代码:
df = pd.DataFrame({'A': ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'],
'C': np.random.randn(8),
'D': np.random.randn(8),
'B': ['one', 'one', 'two', 'three', 'two', 'two', 'one', 'three']})
print(df.groupby('A').sum())
打印出来的是:
引用 皆我百晓生 小程序回复内容作答:
groupby().sum()函数会将所有的列进行加和统计,不仅限于数字列。无论是数字列还是非数字列,都会被包括在结果中进行统计。若想排除非数字列进行加和统计,可以先选择只包括数字列的子集,然后再进行sum()操作。以下是修改后的代码:
df = pd.DataFrame({'A': ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'],
'C': np.random.randn(8),
'D': np.random.randn(8),
'B': ['one', 'one', 'two', 'three', 'two', 'two', 'one', 'three']})
# 选择只包括数字列的子集
numeric_df = df.select_dtypes(include=[np.number])
# 进行加和统计
print(numeric_df.groupby('A').sum())
运行以上代码,打印结果会排除非数字列B,只统计数字列C和D的和。
不会排除的,如果你不想要,那就不要打印就好。以下语句都可以
print(df.groupby('A').sum(['C','D']))
print(df.groupby('A').sum()['C', 'D'])
groupby().sum()的确会对字串字段进行统计(因为字串也可相加的)
你要手动筛选你要的结果
如
print(df.groupby('A')[['C','D']].sum())
或只对数统计
print(df.groupby('A').sum(numeric_only=True))