【问题标题】:Creating a dataframe using pandas and random module使用 pandas 和 random 模块创建数据框
【发布时间】:2017-10-28 14:23:14
【问题描述】:

我想使用 pandas 创建一个数据框,其中 1 列是“EmployeeID”,第二列是“skill”集,他的范围从 1 到 5。“EmployeeID”列应该具有唯一值,而“skill”列可以有重复值。 1. 我尝试使用以下代码生成“EmployeeID”:

    df = pd.DataFrame({'EmployeeID':[random.sample(range(123456,135000),100)]})

但结果不是我所期望的。它生成所有数字并将它们放在一行中

  1. Random.sample 给了我独特的价值。如何在给定范围内生成 100 个重复值?尝试使用 randint,但它没有传递数字计数以生成的选项

【问题讨论】:

  • 你期待什么
  • 使用np.random.randint:pd.DataFrame({'EmployeeID': np.random.randint(123456, 135000, 100)})
  • 不要使用列表,因为 random 已经是可迭代的了
  • 好的。这就是我使用列表所做的错误。这清除了我的第一个查询。我的第二个查询怎么样。我必须写一个for循环吗?
  • 请尝试在以后更清楚地解释您的问题。 How can i generate 100 repetitive values in a given range? 不会试图清楚地解释您的问题是什么以及您想要什么。一些预期的输出也会有所帮助。当然,这一次有人准备迎合您的需求,但这不会总是发生。请记住,如果您的后代遇到同样的问题,您将留下数字碳足迹,以便他们遇到您的问题,所以不要失望。

标签: python pandas dataframe random


【解决方案1】:

使用numpy.random.randint + numpy.tile 如果需要重复1-5 范围:

df = pd.DataFrame({'EmployeeID': np.random.randint(123456, 135000, 100),
                   'skill':np.tile(np.arange(1,6), 20)})
print (df.head(10))
   EmployeeID  skill
0      129323      1
1      126570      2
2      124034      3
3      129659      4
4      125654      5
5      127093      1
6      123780      2
7      125665      3
8      124063      4
9      125061      5

另外,如果需要在1-5 范围内为列skill 使用随机值,请使用双精度randint

df = pd.DataFrame({'EmployeeID': np.random.randint(123456, 135000, 100),
                   'skill':np.random.randint(1,6, 100)})
print (df.head(10))
   EmployeeID  skill
0      131496      2
1      133133      4
2      130999      2
3      127685      5
4      129008      1
5      124238      3
6      124147      3
7      123592      3
8      133859      1
9      126097      3

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-02
    • 2019-06-28
    • 2020-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-22
    相关资源
    最近更新 更多