Python 从groupby中的列获取模式
我试图获取groupby对象中某列的模式,但遇到以下错误:Python 从groupby中的列获取模式,python,pandas,Python,Pandas,我试图获取groupby对象中某列的模式,但遇到以下错误:插入列的索引与框架索引不兼容 这是我要接的电话,我不知道怎么修。任何帮助都将不胜感激 dfBitSeq['KMeans'] = df.groupby('OnBitSeq')['KMeans'].apply(lambda x: x.mode()) 你可以看看 这个错误看起来很相似,答案非常有用 您可以使用下面的示例 from scipy.stats import mode df = pd.DataFrame([[1, 5], [2, 3
插入列的索引与框架索引不兼容
这是我要接的电话,我不知道怎么修。任何帮助都将不胜感激
dfBitSeq['KMeans'] = df.groupby('OnBitSeq')['KMeans'].apply(lambda x: x.mode())
你可以看看
这个错误看起来很相似,答案非常有用 您可以使用下面的示例
from scipy.stats import mode
df = pd.DataFrame([[1, 5], [2, 3], [3, 5], [2, 4], [2, 3], [1, 4], [1, 5]],
columns=['OnBitSeq', 'KMeans'])
# OnBitSeq KMeans
# 0 1 5
# 1 2 3
# 2 3 5
# 3 2 4
# 4 2 3
# 5 1 4
# 6 1 5
modes = df.groupby('OnBitSeq')['KMeans'].apply(lambda x: mode(x)[0][0]).reset_index()
# OnBitSeq KMeans
# 0 1 5
# 1 2 3
# 2 3 5
如果需要将其添加回原始数据帧:
df['Mode'] = df['OnBitSeq'].map(modes.set_index('OnBitSeq')['KMeans'])
Pandas模式返回数据帧,而mean和median则返回标量。因此,您只需要使用x.mode().iloc[0]选择切片
Pandas模式返回数据帧,而mean和median则返回标量。因此,您只需要使用x.mode().iloc[0]选择切片,这正是我所需要的。你能把这个作为答案提交给我吗?我会把它标记为被接受的。这对我很有用。
dfBitSeq['KMeans'] = df.groupby('OnBitSeq')['KMeans'].apply(lambda x: x.mode().iloc[0])