【问题标题】:pandas create a series with n elements (sequential or randbetween)pandas 创建一个包含 n 个元素的系列(顺序或随机)
【发布时间】:2016-02-23 01:07:10
【问题描述】:

我正在尝试创建一个pandas 系列。

系列的一列应包含 n 个连续数字。 [1, 2, 3, ..., n]

一列应包含kk+100 之间的随机数。

一列应包含列表中字符串之间的随机选择。 ['A', 'B', 'C', ... 'Z']

【问题讨论】:

  • 请展示你的努力,SO不是代码编写服务
  • 这应该分成多个问题。
  • 列也是一个系列,听起来你想要一个DataFrame 和三个Series

标签: python pandas dataframe series random-sample


【解决方案1】:

可以有很多解决方案。在代码块 (#) 的 cmets 中,您会找到一些链接以获取更多信息:

import pandas as pd
import numpy as np
import random
import string

k = 5
N = 10

#http://docs.scipy.org/doc/numpy/reference/generated/numpy.random.randint.html
#http://stackoverflow.com/a/2257449/2901002

df = pd.DataFrame({ 'A' : range(1, N + 1 ,1),
    'B' : np.random.randint(k, k + 100 , size=N),
    'C' : pd.Series(random.choice(string.ascii_uppercase) for _ in range(N)) })

print df
#    A   B  C
#0   1  60  O
#1   2  94  L
#2   3  10  W
#3   4  94  X
#4   5  60  O
#5   6  20  K
#6   7  58  Y
#7   8  40  I
#8   9  49  X
#9  10  65  S

Numpy解决方案:

import pandas as pd
import numpy as np

k = 5
N = 10

alphabet = list('ABCDEFGHIJKLMNOPQRSTUVWXYZ')

#http://docs.scipy.org/doc/numpy/reference/generated/numpy.random.choice.html

df = pd.DataFrame({ 'A' : range(1, N + 1 ,1),
    'B' : np.random.randint(k, k + 100 , size=N),
    'C' : np.random.choice(np.array(alphabet, dtype="|S1"), N) })

print df
#    A    B  C
#0   1   16  U
#1   2   76  X
#2   3  101  N
#3   4   61  F
#4   5   52  J
#5   6   62  A
#6   7   99  L
#7   8   23  N
#8   9   75  D
#9  10   16  Q

【讨论】:

    【解决方案2】:
    import pandas
    n = 30
    k = 40
    pandas.DataFrame([(i, random.randint(k, k+100), chr(random.randint(ord('A'), ord('Z')))) for i in xrange(0, n)
    

    如果你想指定列名,否则设置为 0,1,2

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-12
      • 2012-03-09
      • 2021-05-07
      • 1970-01-01
      • 2018-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多