python - 如何从动态列数中找到最大值

标签 python pandas dataframe

我有两个数据框: A:20*15的数字矩阵 B:20*1个数字列表(从1-15)。

我想找到表 A 中每一行的最大数量,但是只查看表 B 中的列

下面的简化示例。

谢谢!

+-----------------+
|       A:        |
+-----------------+
| 7  3  5  4      |
| 8  1  2  5      |
| 2  3  7  2      |
| 4  1  3  6      |


+-----------------+
|       B:        |
+-----------------+
| 2               |
| 4               |
| 1               |
| 2               |

| Desired result: |
| 7               |
| 8               |
| 2               |
| 4               |

最佳答案

哪里 + max

您想在每行的前 n 列中找到最大值,其中 n 来自您的第二个数据框。因此,屏蔽不重要的单元格,然后取最大值,因为 max 默认忽略 NaN

import numpy as np

m = np.arange(dfa.shape[1]) < dfb[0][:, None]  # Thanks rafaelc
dfa.where(m).max(1)

#0    7.0
#1    8.0
#2    2.0
#3    4.0
#dtype: float64

示例数据:

dfa
   0  1  2  3
0  7  3  5  4
1  8  1  2  5
2  2  3  7  2
3  4  1  3  6

dfb
   0
0  2
1  4
2  1
3  2

关于python - 如何从动态列数中找到最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58560377/

相关文章:

反向过滤器/子集数据框

python - pip 卸载失败并显示 "owned by OS"- 即使在 sudo 下

python - 按组计算百分位数,然后添加到现有数据框

Pandas - 将嵌套的 json 分成多行

python - 计算数据框中唯一共同作者的数量

r - Mutate_all 除了某些列

python - 检查 Python 列表中的任何项目是否为无(但包括零)

python - 将数据帧转换为 csv 时删除行

python - __init__ 值与实例化值

python - 什么时候使用 df.value_counts() 与 df.groupby ('...' ).count() 比较合适?