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

如何生成10个以上每行和为9的5行9列伪DataFrame?

生成满足指定条件的多个伪DataFrame

需要生成10个及以上符合以下要求的伪DataFrame:

  • 结构:9列、5行
  • 行索引固定为 Mon、Tue、Wed、Thu、Fri
  • 每行的数值之和必须等于9
  • 数值为非负整数(参考示例)

实现代码

import pandas as pd
import numpy as np

# 固定行索引和列名
row_indices = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri']
col_names = [f'Factor{i}' for i in range(1, 10)]

def generate_valid_df():
    """生成单个符合条件的DataFrame"""
    data = []
    # 为每行生成和为9的9个非负整数
    for _ in range(5):
        # 用multinomial分配9个单位到9个因子,保证行和为9
        row = np.random.multinomial(9, [1/9]*9)
        data.append(row)
    return pd.DataFrame(data, index=row_indices, columns=col_names)

# 生成15个符合要求的DataFrame,可按需修改数量
df_count = 15
df_collection = [generate_valid_df() for _ in range(df_count)]

# 打印第一个生成的DataFrame示例
print("生成的示例DataFrame:")
print(df_collection[0])

关键说明

  • 行和控制:numpy.random.multinomial是核心,它能高效生成和为指定值的非负整数数组,完美满足每行和为9的要求
  • 结构一致性:提前定义好行索引和列名,确保所有生成的DataFrame结构完全统一
  • 批量生成:通过列表推导式可以快速生成任意数量(这里设为15,可自行修改df_count)的DataFrame

验证行和(可选)

如果需要确认生成的DataFrame是否符合行和要求,可添加以下代码验证:

print("\n验证示例DataFrame的行和:")
print(df_collection[0].sum(axis=1))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 23:11:06