Python 重复值
在熊猫身上有没有更惯用的方法 我想为长度为2000的索引设置一个重复整数1到48的列: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),
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个第一个值以创建数据帧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