kam*_*pta 6 python dataframe pandas
我的问题类似于这里提出的问题.我有一个数据帧,我想重复数据帧的每一行k.伴随着它,我也想创建一个值的列0来k-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]
})
Run Code Online (Sandbox Code Playgroud)
下面的命令完成了一半的工作.我正在寻找添加该repeat_id列的pandas方式.
df.loc[df.index.repeat(df.n)]
Run Code Online (Sandbox Code Playgroud)
使用GroupBy.cumcount和copy避免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
Run Code Online (Sandbox Code Playgroud)