我的 pandas 数据框如下所示:
Person ID ZipCode Gender
0 12345 882 38182 Female
1 32917 271 88172 Male
2 18273 552 90291 Female
我想将每一行复制 3 次,例如:
Person ID ZipCode Gender
0 12345 882 38182 Female
0 12345 882 38182 Female
0 12345 882 38182 Female
1 32917 271 88172 Male
1 32917 271 88172 Male
1 32917 271 88172 Male
2 18273 552 90291 Female
2 18273 552 90291 Female
2 18273 552 90291 Female
当然,将索引重置为:
0
1
2
...
我尝试了以下解决方案:
pd.concat([df[:5]]*3, ignore_index=True)
和:
df.reindex(np.repeat(df.index.values, df['ID']), method='ffill')
但它们都不起作用。
最佳答案
使用np.repeat
:
版本 1:
尝试使用 np.repeat
:
newdf = pd.DataFrame(np.repeat(df.values, 3, axis=0))
newdf.columns = df.columns
print(newdf)
上面的代码会输出:
Person ID ZipCode Gender
0 12345 882 38182 Female
1 12345 882 38182 Female
2 12345 882 38182 Female
3 32917 271 88172 Male
4 32917 271 88172 Male
5 32917 271 88172 Male
6 18273 552 90291 Female
7 18273 552 90291 Female
8 18273 552 90291 Female
np.repeat
重复 df
的值,3
次。
然后我们通过分配 new_df.columns = df.columns
添加列。
版本 2:
您也可以在第一行指定列名,如下所示:
newdf = pd.DataFrame(np.repeat(df.values, 3, axis=0), columns=df.columns)
print(newdf)
上面的代码还会输出:
Person ID ZipCode Gender
0 12345 882 38182 Female
1 12345 882 38182 Female
2 12345 882 38182 Female
3 32917 271 88172 Male
4 32917 271 88172 Male
5 32917 271 88172 Male
6 18273 552 90291 Female
7 18273 552 90291 Female
8 18273 552 90291 Female
关于python - 如何在 Pandas 中复制行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50788508/