我想重复特定行的熊猫数据帧给定次数。
例如,这是我的数据框
df= pd.DataFrame({
'id' : ['1','1', '2', '2','2','3'],
'val' : ['2015_11','2016_2','2011_9','2011_11','2012_2','2018_2'],
'data':['a','a','b','b','b','c']
})
print(df)
此处,“ Val”列包含字符串格式的日期。它具有特定的模式“ Year_month”。对于相同的“ id”,我希望重复行的次数等于给定“ val”列值之间的差。除val列外的所有其他列应具有上一行的重复值。
输出应为:
答案 0 :(得分:3)
使用resample
:
df.val = pd.to_datetime(df.val, format='%Y_%m')
out = df.set_index('val').groupby('id').data.resample('1m').ffill().reset_index()
out.assign(val=out.val.dt.strftime('%Y_%m'))
id val data
0 1 2015_11 a
1 1 2015_12 a
2 1 2016_01 a
3 1 2016_02 a
4 2 2011_09 b
5 2 2011_10 b
6 2 2011_11 b
7 2 2011_12 b
8 2 2012_01 b
9 2 2012_02 b
10 3 2018_02 c