如何将不同的函数应用于pandas数据帧上的不同列
发布时间:2020-12-20 11:55:57 所属栏目:Python 来源:网络整理
导读:我想在pandas数据帧上使用groupby,但我希望得到一些列的平均值和其他列的总和.假设我们有以下数据帧: ID A B C1 1 1 01 2 3 11 3 6 14 3 2 14 4 1 06 5 1 06 6 6 16 7 2 0 我想分组ID并获得列“A”的平均值和其他列的总和(实际上我有超过40列). 我希望结果
我想在pandas数据帧上使用groupby,但我希望得到一些列的平均值和其他列的总和.假设我们有以下数据帧:
ID A B C 1 1 1 0 1 2 3 1 1 3 6 1 4 3 2 1 4 4 1 0 6 5 1 0 6 6 6 1 6 7 2 0 我想分组ID并获得列“A”的平均值和其他列的总和(实际上我有超过40列). 我希望结果看起来像这样: ID A B C 1 2 10 2 4 3.5 3 1 6 6 9 1 提前致谢. 解决方法
你可以这样做:
数据: In [127]: df = pd.DataFrame(np.random.randint(0,10,(7,6)),columns=list('ABCDEF')) ...: df['ID'] = np.random.choice([1,2],len(df)) ...: In [128]: df Out[128]: A B C D E F ID 0 7 7 2 2 3 0 1 1 8 4 1 3 6 8 1 2 4 7 7 2 8 4 2 3 5 9 3 6 6 1 1 4 4 6 1 7 4 6 2 5 4 5 3 8 7 6 2 6 8 4 1 8 1 0 1 解: In [129]: fnc = {c:'sum' for c in df.columns.drop(['ID','A'])} ...: fnc['A'] = 'mean' ...: In [130]: fnc Out[130]: {'A': 'mean','B': 'sum','C': 'sum','D': 'sum','E': 'sum','F': 'sum'} In [131]: df.groupby('ID').agg(fnc).reindex_axis(df.columns.drop('ID'),1) Out[131]: A B C D E F ID 1 7 24 7 19 16 9 2 4 18 11 17 19 16 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |