gpt4 book ai didi

python - 按列值复制 Pandas 数据框中的行并添加具有重复索引的新列

转载 作者:太空狗 更新时间:2023-10-30 00:04:49 25 4
gpt4 key购买 nike

我的问题与有人提出的问题类似 here .我有一个数据框,我想重复数据框的每一行 k 次。与此同时,我还想创建一个值 0k-1 的列。所以

import pandas as pd

df = 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'],
'n' : [ 1, 2, 2, 3, 3, 3],
'v' : [ 10, 13, 13, 8, 8, 8],
'repeat_id': [0, 0, 1, 0, 1, 2]
})

下面的命令完成了一半的工作。我正在寻找添加 repeat_id 列的 pandas 方法。

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

最佳答案

使用GroupBy.cumcountcopy为避免 SettingWithCopyWarning:

如果稍后修改 df1 中的值,您会发现修改不会传播回原始数据 (df),并且 Pandas 会发出警告。

df1 = df.loc[df.index.repeat(df.n)].copy()
df1['repeat_id'] = df1.groupby(level=0).cumcount()
df1 = df1.reset_index(drop=True)
print (df1)
id n v repeat_id
0 A 1 10 0
1 B 2 13 0
2 B 2 13 1
3 C 3 8 0
4 C 3 8 1
5 C 3 8 2

关于python - 按列值复制 Pandas 数据框中的行并添加具有重复索引的新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50291125/

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