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

如何生成每行有效列数与行值匹配的三角形DataFrame?

实现方法

可以通过以下步骤用Pandas实现需求:

  1. 确定目标列范围:先获取输入DataFrame中number列的最大值,以此确定需要生成的C1到Cn列的数量。
  2. 批量生成目标列:利用numpy的广播特性,逐行判断每个Ck列是否需要填充对应序号(当k≤当前行的number值时填充k,否则填充NaN)。

完整代码示例

import pandas as pd
import numpy as np

# 创建输入DataFrame
df = pd.DataFrame({'number': [1, 2, 3, 4, 6]})

# 获取number列的最大值,确定C列的数量
max_num = df['number'].max()

# 生成C列的列名列表
c_columns = [f'C{i}' for i in range(1, max_num + 1)]

# 利用广播和条件判断填充C列的值
df[c_columns] = np.where(
    np.arange(1, max_num + 1) <= df['number'].values[:, np.newaxis],
    np.arange(1, max_num + 1),
    np.nan
)

print(df)

代码说明

  • np.arange(1, max_num + 1)生成从1到最大值的数组,对应每个C列的序号。
  • df['number'].values[:, np.newaxis]将number列转换为二维数组,实现与C列序号数组的广播比较。
  • np.where根据比较结果填充对应序号或NaN,批量生成所有C列的值。

运行代码后即可得到你需要的结果DataFrame。

内容的提问来源于stack exchange,提问作者Jg9912.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 14:15:47