biubiu321 发表于 2020-9-6 18:16:49

pandas 遇到一個神奇的小問題!

CSV表格

   ID   名字       年齡   得分
   1    小王            22    2
   2    小黑            23    3
   3    小白           23    3
   1    小王            22    2

---------------------------------------------------
希望的最終效果。 把ID一樣的叠加上去,表格字段不變。

   ID   名字       年齡   得分
   1    小王            22    4
   2    小黑            23    3
   3    小白           23    3

-------------------------------------------------------

我嘗試用

import pandas as pd

dic = {
    "ID": ,
    "名字": ['小王', '小黑', '小白','小王'],
    "年齡": ['22', '23', '23','22'],
    "得分":
,
}
df = pd.DataFrame(dic)

df.groupby('ID')["得分"].sum().reset_index()
------------
結果:
   ID得分
0   1   6
1   2   3
2   3   3
-----------
比希望的結果少了名字、年齡 字段。
-----------------------------------------------
有大佬有辦法得到希望的效果嗎?
感謝!

疾风怪盗 发表于 2020-9-6 18:53:39

这样:
import pandas as pd

dic = {
    "ID": ,
    "名字": ['小王', '小黑', '小白', '小王'],
    "年龄": ['22', '23', '23', '22'],
    "得分":
    }
df = pd.DataFrame(dic)
print(df)

df=df.groupby(by=['ID','名字','年龄']).sum().reset_index()
print(df)

不能懒 发表于 2020-9-6 22:09:32

层叠?

昨非 发表于 2020-9-8 00:37:02

白嫖,打扰{:10_256:}

BIO-张磊 发表于 2020-9-8 14:25:08

第一种方法
df.groupby(by=['ID','名字','年龄']).sum()
第二种方法,引入pandas的姊妹库numpy库
import numpy as np
df.groupby(by=['ID','名字','年龄']).agg()

第二种方法的好处是,可以在np.sum后面添加别的统计函数,比如np.mean求平均数,或者其他统计函数
df.groupby(by=['ID','名字','年龄']).agg()

心驰神往 发表于 2020-9-21 08:35:34

{:10_254:}

fall_bernana 发表于 2020-9-21 09:42:35

你的groupby限定了返回的字段

biubiu321 发表于 2020-10-8 19:37:36

fall_bernana 发表于 2020-9-21 09:42
你的groupby限定了返回的字段

請問如何做到groupby不限定返回的字段?

疾风怪盗 发表于 2020-10-8 20:00:14

这个贴。。。怪不得看着好眼熟 。。。。。。怎么还没结。。。。。又翻出来了。。。。。。。

萌出血 发表于 2020-10-8 20:05:36

1
页: [1]
查看完整版本: pandas 遇到一個神奇的小問題!