我有一个DataFrame,如:
df = np.array([[1,5,3,4,5,5,6,],[1,2,2,3,4,5,6],[1,2,3,4,5,6,6]])
df = pd.DataFrame(df)
我的预期输出是每行的多数值,如:
0 5
1 2
2 6
我是熊猫新手。谢谢你的帮助。
答案 0 :(得分:3)
使用pandas版本0.13.0,您可以使用df.mode(axis = 1)
(使用pd.__version__
检查您的版本)
df.mode(axis=1)
0
0 5
1 2
2 6
[3 rows x 1 columns]
答案 1 :(得分:1)
您正在寻找的概念是一种模式,它是集合中最常出现的数字。 Scipy和Pandas都有办法处理模式,通过scipy.stats.mode和pandas.DataFrame.mode(沿着轴工作)。所以对于这个例子你可以说:
df = np.array([[1,5,3,4,5,5,6,],[1,2,2,3,4,5,6],[1,2,3,4,5,6,6]])
for i in np.arange(len(df)):
results = np.zeros(len(df))
results[i] = scipy.stats.mode(df[i])
这应该返回一个numpy数组,其中包含每个数组的模式。要与Pandas做同样的事情,你可以这样做:
df = np.array([[1,5,3,4,5,5,6,],[1,2,2,3,4,5,6],[1,2,3,4,5,6,6]])
df = pd.DataFrame(df)
df.mode(axis = 1)
文档在这里:http://pandas.pydata.org/pandas-docs/dev/generated/pandas.DataFrame.mode.html