Python 将数据帧乘以固定的行数
我有一个数据框。我希望将(基本上复制数据帧)乘以固定数量的目标行 df: 我想复制这个数据帧,这样生成的数据帧应该有10行,基本上每行应该相乘三次,第10行可以是三行中的任意一行。我认为需要重复所有行,只重复一行:Python 将数据帧乘以固定的行数,python,pandas,duplicates,Python,Pandas,Duplicates,我有一个数据框。我希望将(基本上复制数据帧)乘以固定数量的目标行 df: 我想复制这个数据帧,这样生成的数据帧应该有10行,基本上每行应该相乘三次,第10行可以是三行中的任意一行。我认为需要重复所有行,只重复一行: N = 10 a, b = divmod(N,len(df)) print (a, b) 3 1 如果所有列具有相同的数据类型,则解决方案如下: 解决方案(如果可能)不同的数据类型: 仅适用于以下情况的解决方案: 对于重复行,具有仅重复索引和loc的解决方案: idx = np
N = 10
a, b = divmod(N,len(df))
print (a, b)
3 1
如果所有列具有相同的数据类型,则解决方案如下:
解决方案(如果可能)不同的数据类型: 仅适用于以下情况的解决方案: 对于重复行,具有仅重复索引和
loc
的解决方案:
idx = np.hstack((np.repeat(df.index[:-1], a), np.repeat(df.index[-1], a + b)))
df = df.loc[idx].reset_index(drop=True)
所有列的数据类型都相同吗?
c = np.repeat(df.values, a, axis=0)
d = np.repeat(df.values[-1], b, axis=0)
df = pd.DataFrame(np.vstack((c,d)), columns=df.columns)
print (df)
col1 col2 col3
0 A1 B1 C1
1 A1 B1 C1
2 A1 B1 C1
3 A13 B13 C13
4 A13 B13 C13
5 A13 B13 C13
6 A27 B27 C27
7 A27 B27 C27
8 A27 B27 C27
9 A27 B27 C27
df = pd.concat([df] * a + [df.iloc[[-1]]] * b).sort_values('col1').reset_index(drop=True)
print (df)
col1 col2 col3
0 A1 B1 C1
1 A1 B1 C1
2 A1 B1 C1
3 A13 B13 C13
4 A13 B13 C13
5 A13 B13 C13
6 A27 B27 C27
7 A27 B27 C27
8 A27 B27 C27
9 A27 B27 C27
idx = np.hstack((np.repeat(df.index[:-1], a), np.repeat(df.index[-1], a + b)))
df = df.loc[idx].reset_index(drop=True)