给定格式为 df
的数据帧
A B C D E F G H I J ...
0 0 1 0 0 0 1 0 0 0 0 ...
1 1 1 0 0 1 1 0 0 0 0 ...
2 0 0 1 0 0 0 0 0 0 0 ...
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
我希望最终得到以下格式的结果数据框
corr count
A B 270
B F 15
C J 100
. . .
. . .
. . .
其中对于每一行,corr
是具有最大共现的列,count
是共现计数。
我当前的代码如下所示:
cooccurring_df = df.T.dot(df)
np.fill_diagonal(cooccurring_df.values, 0)
idxmax_df = pd.DataFrame(cooccurring_df.idxmax(axis = 0), columns=['corr'])
给出:
corr
A B
B F
C J
. .
. .
. .
但是我一生都无法弄清楚如何将计数从 cooccurring_df
正确分配到 idxmax_df
中。我确信我错过了一些明显的东西,并且我确信有更好的方法到达我想去的地方。
最佳答案
IIUC,您正在寻找的是查找
:
idxmax_df['count'] = cooccurring_df.lookup(idxmax_df.index, idxmax_df['corr'])
测试数据:
A B C D E F G H I J
0 0 1 0 0 0 1 0 0 0 0
1 1 1 0 0 1 1 0 0 0 0
2 0 0 1 0 0 0 0 0 0 1
输出(对于给定数据)
corr count
A B 1
B F 2
C J 1
D A 0
E A 1
F B 2
G A 0
H A 0
I A 0
J C 1
关于python - 如何提取pandas DataFrame中的属性名称和最大共现计数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58635229/