python - 如何提取pandas DataFrame中的属性名称和最大共现计数?

标签 python pandas dataframe statistics

给定格式为 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/

相关文章:

python - Celery 将任务路由到错误的工作服务器

Python脚本已经编译成exe,但是如何让它不显示命令提示符?

python - pandas 中项目类别的 Barpots

python - 根据来自另一列 pandas 的相同或更接近的值替换列中的值

python - Pandas:如何将一个数据帧的值映射到另一个数据帧?

python - 虚拟环境错误 : the executable in env/bin/python is not functioning

python - 使用Python Flask的POST请求 - postman

python - 在 Python 中查找列表的限制

Python组合目录中的所有csv文件并按日期时间排序

python - 在 pandas.DataFrame 中更改年份