python - 如何在 Pandas 中复制行?

标签 python pandas dataframe repeat

我的 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/

相关文章:

python - 基于对多列 pandas python 的逻辑操作更新另一列

python PIL : How to FIll a Image with a copyright logo like this?

python - 如何在python中找到右边的位

python - 用于字符串重复搜索的python代码的优化

python - 用于时间序列数据的 Pandas Melt 函数

python - 使用 pandas 数据帧中的前向和后向填充填充缺失值(ffill 和 bfill)

python - 基于项目和 ID 两列的 SUM

python - 在pandas中获取时间戳最接近给定日期时间的行的有效方法

python - 摆脱没有标题的列

python - Pandas :使用 .loc 和 MultiIndex 进行条件选择