如何生成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
相关产品推荐
相关产品推荐

