这是一个非常简单的问题,我在徘徊是否有一种简单的技术,如果可能的话不使用循环,它必须已经在某个地方回答了,但是我找不到它。 我有一个1014行的数据帧,我想做的是重复前6行n次,然后在前6行之后重复6行n次,同样地每6行重复一次
假设一个简单的例子
import pandas as pd
df = pd.DataFrame({'X': [1,2,9,2,3,1,2,4],
'Y': [6,7,8,9,0,4,6,7]})
让每两行重复3次。 (示例前2行和后2行重复3次) 所以我想得到的是
import pandas as pd
df = pd.DataFrame({'X': [1,2,1,2,1,2,9,2,9,2,9,2],
'Y': [6,7,6,7,6,7,8,9,8,9,8,9]})
答案 0 :(得分:0)
如果您需要重复某些数据行,那么在您的应用程序中需要的地方重复这样做会更好吗?
对于它的价值,以下内容在数据框的第二个位置重复了两行。
您可以创建一个循环,每n行重复一次此过程。
import pandas as pd
df = pd.DataFrame({'X': [1,2,9,2,3,1,2,4],
'Y': [6,7,8,9,0,4,6,7]})
print(pandasql.sqldf("select * from df", locals()))
df = pd.concat([df.iloc[:2], df[1:3], df.iloc[2:]]).reset_index(drop=True)
print(pandasql.sqldf("select * from df", locals()))
答案 1 :(得分:0)
这是一种通过分组复制的方式:
# create group id
df['grp'] = df.groupby(df.index % 2).cumcount()
# duplicate group
df = (df
.query("grp <= 1") # take first two groups
.groupby('grp', as_index=False)
.apply(lambda x: x.append(x)) # duplicate group
.reset_index(drop=True)
.drop("grp", axis=1))
print(df)
X Y
0 1 6
1 2 7
2 1 6
3 2 7
4 9 8
5 2 9
6 9 8
7 2 9