首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python Pandas -新的列分组和模式

Python Pandas -新的列分组和模式
EN

Stack Overflow用户
提问于 2018-07-15 17:18:26
回答 1查看 409关注 0票数 2

我有下一个数据帧

代码语言:javascript
复制
A | B | C
---------
1 | 22 | 12
2 | 22 | 5
2 | 22 | 5
3 | 23 | 6

我想在这个数据框中添加一个名为D的新列。D的值应该是按A和B分组的C(模式)中重复次数最多的值。

我试着用这个

代码语言:javascript
复制
def mode(x):
    return mstats.mode(x, axis=None)[0]

df_total['D'] = df_total.groupby(['A','B']).agg({'C': mode})

但是我有下一个错误

代码语言:javascript
复制
TypeError: incompatible index of inserted column with frame index

有什么办法解决这个问题吗?

谢谢大家!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-16 07:13:18

您可以在pd.Series.mode中使用groupby。困难在于pd.Series.mode返回的是一个系列,而不是一个标量。它不被认为是一个“缩减”函数。因此,您必须提取序列的第一个值。

来自@gyoza的数据。

代码语言:javascript
复制
df['D'] = df.groupby(['A', 'B'])['C'].transform(lambda x: x.mode().iloc[0])

print(df)

   A   B   C   D
0  1  22  12  12
1  2  22   5   5
2  2  22   5   5
3  2  22   3   5
4  3  23   6   6
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51346991

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档