Python 重复值

Python 重复值,python,pandas,dataframe,Python,Pandas,Dataframe,在熊猫身上有没有更惯用的方法 我想为长度为2000的索引设置一个重复整数1到48的列: df = pd.DataFrame(np.zeros((2000, 1)), columns=['HH']) h = 1 for i in range(0,2000) : df.loc[i,'HH'] = h if h >=48 : h =1 else : h += 1 以下是更直接、更快捷的方法: pd.DataFrame(np.tile(np.arange(1, 49),

在熊猫身上有没有更惯用的方法

我想为长度为2000的索引设置一个重复整数1到48的列:

df = pd.DataFrame(np.zeros((2000, 1)), columns=['HH'])
h = 1

for i in range(0,2000) :
    df.loc[i,'HH'] = h
    if h >=48 : h =1
    else : h += 1

以下是更直接、更快捷的方法:

pd.DataFrame(np.tile(np.arange(1, 49), 2000 // 48 + 1)[:2000], columns=['HH'])

具体步骤如下:

  • np.arange(1,49)
    创建一个从
    1
    48
    的数组(包括在内)
  • np.tile(A,N)
    重复数组
    A
    N
    次,因此在本例中,您得到
    [1 2 3…48 1 2 3…48…1 2 3…48]
    。您应该重复数组
    2000//48+1
    次,以获得至少2000个值
  • [:2000]
    从生成的数组中检索2000个第一个值以创建数据帧

  • 以下是更直接、更快捷的方法:

    pd.DataFrame(np.tile(np.arange(1, 49), 2000 // 48 + 1)[:2000], columns=['HH'])
    

    具体步骤如下:

  • np.arange(1,49)
    创建一个从
    1
    48
    的数组(包括在内)
  • np.tile(A,N)
    重复数组
    A
    N
    次,因此在本例中,您得到
    [1 2 3…48 1 2 3…48…1 2 3…48]
    。您应该重复数组
    2000//48+1
    次,以获得至少2000个值
  • [:2000]
    从生成的数组中检索2000个第一个值以创建数据帧
  • 即,附加2个数组:

    (1)
    np.tile(范围(1,49),int(2000/48))

    (2)
    范围(1,np.mod(2000,48)+1)

    以及从相应的字典构造
    数据帧

    即,附加2个数组:

    (1)
    np.tile(范围(1,49),int(2000/48))

    (2)
    范围(1,np.mod(2000,48)+1)


    并从相应的字典中构造数据帧。

    很好的解释。谢谢你的解释。谢谢
    >>> r = np.tile(l, 2000 // 48 + 1)
    >>> r
    array([ 1,  2,  3, ..., 46, 47, 48])
    >>> r.shape # The array is slightly larger than 2000
    (2016,)
    
    >>> d = pd.DataFrame(r[:2000], columns=['HH'])
    
    df = pd.DataFrame({'HH':np.append(np.tile(range(1,49),int(2000/48)), range(1,np.mod(2000,48)+1))})
    
    len(np.tile(range(1,49),int(2000/48)))
    1968
    
    len(range(1,np.mod(2000,48)+1))
    32