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

如何在Python中从零创建DataFrame并添加自定义变量?

正确创建包含伯努利和正态分布变量的DataFrame方法

你的代码存在三个关键问题,导致无法得到预期的DataFrame:

  1. 缺失必要导入:生成正态分布的norm没有从scipy.stats模块导入,运行时会抛出名称错误
  2. reshape参数错误:reshape(-100, 1)是无效语法,要将一维数组转为列向量,应该用reshape(-1, 1),其中-1表示让系统根据数组元素数量自动计算行数
  3. DataFrame赋值逻辑错误:df.assign()方法不会修改原DataFrame,而是返回一个包含新列的新DataFrame,你没有将这个新对象赋值给df,所以原df始终是空的

修正后的完整代码

# 导入所有需要的模块
from scipy.stats import bernoulli, norm
import pandas as pd

# 生成伯努利分布变量x并转为列向量
x = bernoulli.rvs(size=100, p=0.6)
x = x.reshape(-1, 1)

# 生成正态分布变量y并转为列向量
y = norm.rvs(size=100, loc=0, scale=1)
y = y.reshape(-1, 1)

# 方法1:直接在创建DataFrame时传入数据(推荐)
df = pd.DataFrame({'x': x.flatten(), 'y': y.flatten()})
print(df)

# 方法2:使用assign并重新赋值给df
# df = pd.DataFrame()
# df = df.assign(x=x.flatten(), y=y.flatten())
# print(df)

补充说明

  • reshape(-1,1)得到的是二维数组,直接传入DataFrame会被识别为嵌套结构,用flatten()转为一维数组更稳妥;也可以用pd.Series(x.squeeze(), name='x')完成二维到一维的转换
  • 直接在pd.DataFrame()构造函数中传入字典的方式,代码更简洁直观,是日常开发的首选写法

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 00:25:20