对熊猫来说相当新,并试图找到解决以下问题的简单方法:
我有一个大的相关矩阵(几千行/列)作为数据帧,并希望按列提取最大值,不包括当前存在于所有列中的“1”(矩阵的对角线)。 / p>
尝试了.max()。imax()的各种变体,包括以下内容:
corr.drop(corr.idxmax()).max()
但只能得到无意义的结果。任何帮助都非常感谢。
答案 0 :(得分:2)
您可以使用np.fill_diagonal
df_values=df.values.copy()
np.fill_diagonal(df_values,-np.inf)
df_values.max(0)
或者使用单行,您可以使用:
df.values[~np.eye(df.shape[0],dtype=bool)].reshape(df.shape[0]-1,-1).max(0)
答案 1 :(得分:0)
这将获得每列的第二高值。
作为数组:
np.partition(df.values, len(df)-2, axis=0)[len(df)-2]
或在数据框中:
pd.DataFrame(np.partition(df.values, len(df)-2, axis=0)[len(df)-2],
index=df.columns, columns=['2nd'])