我如何 pandas 分组获得总和?
在pandas中,你可以使用`groupby()`函数来按照特定列的值进行分组,然后使用`sum()`函数来计算每组的总和。以下是一个详细的步骤:

1. 首先,你需要导入pandas库:

```python
import pandas as pd
```

2. 创建一个数据框(DataFrame):

```python
data = {'A': ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'],
        'B': ['one', 'one', 'two', 'three', 'two', 'two', 'one', 'three'],
        'C': [1, 2, 3, 4, 5, 6, 7, 8],
        'D': [10, 20, 30, 40, 50, 60, 70, 80]}

df = pd.DataFrame(data)
```

3. 使用`groupby()`函数按照列A的值进行分组,然后使用`sum()`函数计算每组的总和:

```python
result = df.groupby('A').sum()
```

这将返回一个新的数据框,其中每组的行都被合并,列C和D的总和被计算出来。

4. 打印结果:

```python
print(result)
```

这将输出以下内容:

```
       C   D
A            
bar   NaN  NaN
foo   22  200
```

在这个例子中,我们按照列A的值进行分组,然后计算每组的总和。注意,当我们在列C和D上应用sum()函数时,结果是一个浮点数(NaN),这是因为这些列中的某些值是字符串,不能被转换为数字。

测试用例:

```python
data = {'A': ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'],
        'B': ['one', 'one', 'two', 'three', 'two', 'two', 'one', 'three'],
        'C': [1, 2, 3, 4, 5, 6, 7, 8],
        'D': ['10', '20', '30', '40', '50', '60', '70', '80']}

df = pd.DataFrame(data)

result = df.groupby('A').sum()

print(result)  # 应该输出:     C   D
               #         foo   22  200
```

在这个例子中,我们将列D的值转换为字符串。当我们计算每组的总和时,结果仍然是浮点数(NaN)。

应用场景和示例:

如果你正在处理一个包含销售数据的数据框,并且你想按照产品的类别(如商品A、B等)来分析每个类别的总销售额,你可以使用groupby()函数和sum()函数来实现。例如,如果你的数据框是这样的:

```python
data = {'Product': ['A', 'B', 'C', 'A', 'B', 'C'],
        'Sales': [100, 200, 300, 150, 250, 350]}

df = pd.DataFrame(data)
```

你可以使用以下代码来计算每个产品的总销售额:

```python
result = df.groupby('Product').sum()
print(result)
```

这将输出:

```
    Sales
Product           
A        250
B        500
C        650
```

在这个例子中,我们按照产品列的值进行分组,然后计算每组的总销售额。

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐