pandas 方法链接df.每行重复3次

ewm0tg9j  于 2023-02-27  发布在  其他
关注(0)|答案(2)|浏览(143)

我有以下数据框:

** Dataframe :**

id animal
1  dog
2  cat
3  rabbit
4  horse
5  fox

我想把每个id复制3次。我怎样用方法链在Pandas身上做到这一点?

预期产出:

id animal
1  dog
1  dog
1  dog
2  cat
2  cat
2  cat
3  rabbit
3  rabbit
3  rabbit
4  horse
4  horse
4  horse
5  fox
5  fox
5  fox
u2nhd7ah

u2nhd7ah1#

您可以使用locpipe链接复制:

df.loc[lambda d: d.index.repeat(3)]

或者:

df.pipe(lambda d: d.loc[d.index.repeat(3)])

输出:

id  animal
0   1     dog
0   1     dog
0   1     dog
1   2     cat
1   2     cat
1   2     cat
2   3  rabbit
2   3  rabbit
2   3  rabbit
3   4   horse
3   4   horse
3   4   horse
4   5     fox
4   5     fox
4   5     fox
esyap4oy

esyap4oy2#

一种方法是使用pandas.reindex

df.reindex(df.index.repeat(3)).reset_index(drop=True)

df.set_index('id').reindex(df['id'].repeat(3)).reset_index()

输出:

id  animal
0    1     dog
1    1     dog
2    1     dog
3    2     cat
4    2     cat
5    2     cat
6    3  rabbit
7    3  rabbit
8    3  rabbit
9    4   horse
10   4   horse
11   4   horse
12   5     fox
13   5     fox
14   5     fox

相关问题