Pandas如何计算列表元素对应DataFrame同位置列的百分位及小于该元素的个数
问题解答
最优实现方案
直接用pandas内置的向量化比较操作即可,全程不需要写任何显式循环,性能远高于遍历列/遍历元素的写法,数据量越大优势越明显:
import pandas as pd # 示例数据初始化 l = [4,1,6,7] df = pd.DataFrame([ [1,2,3,4], [5,4,1,0], [7,5,0,9] ]) # 核心实现仅一行代码 result = (df < l).sum().tolist() print(result) # 输出 [1, 0, 3, 2]
逻辑说明
- pandas执行
df < 长度等于df列数的序列运算时,会自动按列对齐规则广播比较:序列第i个元素会和df第i列的所有值逐一比较,返回布尔矩阵 - 对布尔矩阵按列求和,自动统计每列真值(即小于阈值)的元素个数
- 最后调用
tolist()转成列表格式就得到目标输出
内容的提问来源于stack exchange,提问作者Cranjis
相关产品推荐
相关产品推荐

