Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从groupby中的列获取模式_Python_Pandas - Fatal编程技术网

Python 从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

我试图获取groupby对象中某列的模式,但遇到以下错误:
插入列的索引与框架索引不兼容

这是我要接的电话,我不知道怎么修。任何帮助都将不胜感激

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])