gpt4 book ai didi

python - 通过列值复制 Pandas 数据框中的行

转载 作者:IT老高 更新时间:2023-10-28 20:39:52 24 4
gpt4 key购买 nike

我想复制 Pandas 数据框中的行。每行应重复 n 次,其中 n 是每行的一个字段。

import pandas as pd

what_i_have = pd.DataFrame(data={
'id': ['A', 'B', 'C'],
'n' : [ 1, 2, 3],
'v' : [ 10, 13, 8]
})

what_i_want = pd.DataFrame(data={
'id': ['A', 'B', 'B', 'C', 'C', 'C'],
'v' : [ 10, 13, 13, 8, 8, 8]
})

这可能吗?

最佳答案

您可以使用 Index.repeat根据列获取重复的索引值,然后从 DataFrame 中选择:

df2 = df.loc[df.index.repeat(df.n)]

id n v
0 A 1 10
1 B 2 13
1 B 2 13
2 C 3 8
2 C 3 8
2 C 3 8

或者您可以使用 np.repeat获取重复的索引,然后使用它来索引到框架中:

df2 = df.loc[np.repeat(df.index.values, df.n)]

id n v
0 A 1 10
1 B 2 13
1 B 2 13
2 C 3 8
2 C 3 8
2 C 3 8

之后只需要进行一些清理工作:

df2 = df2.drop("n", axis=1).reset_index(drop=True)

id v
0 A 10
1 B 13
2 B 13
3 C 8
4 C 8
5 C 8

请注意,如果您可能需要担心重复的索引,您可以使用 .iloc而是:

df.iloc[np.repeat(np.arange(len(df)), df["n"])].drop("n", axis=1).reset_index(drop=True)

id v
0 A 10
1 B 13
2 B 13
3 C 8
4 C 8
5 C 8

它使用位置,而不是索引标签。

关于python - 通过列值复制 Pandas 数据框中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26777832/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com