python - 不使用 for 循环追加

标签 python loops pandas

考虑

ID  EXPENDITURE
1   100 
1   101   
1   88   
2   28   
2   77 

我想按ID计算总支出,即:

 ID TOTAL_EXPENDITURE
 1  289
 2  105

我当前的代码如下所示:

list = []
for i in df.ID.unique()
    CSPEC = df.loc[df['ID'] == i]
    TOTAL_EXP = CSPEC['EXPENDITURE'].sum()
    list.append(TOTAL_EXP)

这确实会给我答案。但是,我面临 117705 个唯一 ID,这个 for 循环需要很长时间。

我已经阅读了有关 numpy 的内容,但是在学习了 YouTube 教程之后,我仍然不确定如何实现它;因此,我更喜欢不同的方法(如果可能的话!)有人可以帮助我吗?

最佳答案

试试这个:

df.groupby('ID')['EXPENDITURE'].sum()

获取每个ID的支出金额。它仍然很快,因为 Pandas 是基于 numpy 构建的。

关于python - 不使用 for 循环追加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43958146/

相关文章:

python - Python Pandas 中的 Groupby/Sum - 零计数不显示......有时

python - Pandas:如何水平合并多个 CSV(键、值)文件并使用文件名在生成的 DF 中命名 `value` 列

python - 我想打印日志文件中的所有消息

python - 护士调度问题或工具,在某些日子添加不同的轮类时间

python - 如何将一行拆分为多行并在数据框列上应用日期时间?

python - 在 python re 中分隔字符串中的第一个单词

java - 从文本文件中扫描、分割和赋值

java - 我的循环仅检查第一个数组项

c - 如何在每 1000 个值后停止无限循环?

python - 发现类型错误 : sequence item 3: expected string, float