You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python循环迭代后创建新列:实现tau列的表格化输出

用Pandas/Numpy实现通用的tau表格生成方案

问题背景

原代码通过嵌套循环处理proba列表生成一维tau数组,但实际需要将结果整理为以proba为第一列,每行对应原proba元素、每列是对比后tau值的表格形式。

原代码:

proba=[12,65,1,54]
tau=[]

for i in range(len(proba)):
  for j in range(len(proba)):
    if proba[j]>=proba[i]:
      tau.append(1)
    else:
      tau.append(0)
print(tau)

输出:

[1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1]

Pandas 实现方案

利用Pandas的广播特性,直接完成元素间对比,生成符合要求的表格,代码简洁且支持任意长度的proba列表:

import pandas as pd

proba = [12, 65, 1, 54]
# 将proba转为Series,方便后续广播操作
proba_series = pd.Series(proba, name='proba')
# 生成tau矩阵:每行对应原proba元素与所有元素的对比结果(>=则为1,否则0)
tau_matrix = (proba_series.values >= proba_series.values[:, None]).astype(int)
# 构建DataFrame并设置tau列名
df = pd.DataFrame(tau_matrix, columns=[f'tau{i+1}' for i in range(len(proba))])
# 把proba列插入到最前面
df.insert(0, 'proba', proba)

# 打印无索引的表格
print(df.to_string(index=False))

输出:

proba  tau1  tau2  tau3  tau4
   12     1     0     1     0
   65     1     1     1     1
    1     0     0     1     0
   54     1     0     1     1

Numpy 实现方案

用Numpy的广播功能生成对比矩阵,再格式化输出成表格样式,适合不需要DataFrame的场景:

import numpy as np

proba = [12, 65, 1, 54]
proba_arr = np.array(proba)
# 广播对比生成tau矩阵,布尔值转整数
tau_arr = (proba_arr >= proba_arr[:, np.newaxis]).astype(int)

# 格式化输出表格
# 打印表头
header = ['proba'] + [f'tau{i+1}' for i in range(len(proba))]
print(' '.join(f'{col:<8}' for col in header))
# 逐行打印数据
for p, row in zip(proba, tau_arr):
    row_str = [str(p)] + [str(num) for num in row]
    print(' '.join(f'{val:<8}' for val in row_str))

输出:

proba    tau1     tau2     tau3     tau4    
12       1        0        1        0       
65       1        1        1        1       
1        0        0        1        0       
54       1        0        1        1       

内容的提问来源于stack exchange,提问作者bhushan bowlekar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 14:15:30