按列值复制pandas dataframe中的行,并添加具有重复索引的新列

2024-03-28 13:33:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我的问题与被问到的问题相似。我有一个数据帧,我想重复数据帧的每一行k次。同时,我还想创建一个值为0到{}的列。所以

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]
})

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

^{pr2}$

Tags: 数据import命令iddataframepandasdfdata
1条回答
网友
1楼 · 发布于 2024-03-28 13:33:38

使用^{}和{a2}避免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

相关问题 更多 >