gpt4 book ai didi

Python:如何查找模式(第一列 - 对象),按第二列分组,输出到第三列

转载 作者:太空宇宙 更新时间:2023-11-03 16:45:11 25 4
gpt4 key购买 nike

我正在使用 Python 2.7(在 iPython Notebook 中)并且我有以下 pandas DataFrame:

df = pd.DataFrame({'Client': [161252, 8858, 8858, 8858, 8858, 56552, 56552], 
'State': ['NE', 'MN', 'MN', 'TX', 'MN', 'NJ', 'WA']})

我想要做的是将行按“客户端”分组,找到每个客户端的“状态”模式,然后将输出放入名为“Mode_State”的新列中。 “State”列是一个 Python 对象。

我尝试过以下方法:

from scipy.stats import mode
df.insert(1, 'Mode_State', ' ')

df['Mode_State'] = df['State'].groupby(df["Client"]).transform(mode)
df

这会产生以下结果:

    Client  Mode_State  State
0 161252 NE NE
1 8858 MN MN
2 8858 3 MN
3 8858 MN TX
4 8858 3 MN
5 56552 [NJ] NJ
6 56552 [1] WA

我意识到 scipy.stats 还包括模式的数量,所以我尝试了以下(只是返回两个字符的状态信息,而不是模式号):

df['Mode_State'] = df['State'].groupby(df["Client"]).transform(mode[0])
df

这当然给了我:

TypeError                                 Traceback (most recent call last)
<ipython-input-42-1050c2b46d90> in <module>()
1 from scipy.stats import mode
2
----> 3 df['Mode_State'] = df['State'].groupby(df["Client"]).transform(mode[0])
4 df

TypeError: 'function' object has no attribute '__getitem__'

我还尝试了 StackExchange 上处理字符串的各种响应(例如 lambda、agg、map 等)。我收到了我的第一个结果或错误消息的变化。如果有两个相等的模式(例如客户端 56552 有 NJ 和 WA),则可以返回最低的结果。

如果有人能提供一些提示来指导我正确的方向,我将不胜感激。

谢谢(注意,我显然还在学习 Python,所以经验不是很丰富。我一直在通过 Wes McKinney 的 Python 进行数据分析,但是事实证明,使用字符串对我来说更具挑战性)。

最佳答案

df['Mode_State'] = df.groupby('Client').State.transform(lambda group: group.mode())


>>> df
Client State Mode_State
0 161252 NE NE
1 8858 MN MN
2 8858 MN MN
3 8858 TX MN
4 8858 MN MN
5 56552 NJ NJ
6 56552 WA WA

关于Python:如何查找模式(第一列 - 对象),按第二列分组,输出到第三列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36380691/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com