我有这样一个数据框架:
df1 = pd.DataFrame({'a': [1,2],
'b': [3,4],
'c': [6,5]})
df1
Out[150]:
a b c
0 1 3 6
1 2 4 5现在,我想创建一个df,它根据col和c+ 1之间的差异来重复每一行。因此,对于第一行,b和c之间的差异是6-3 = 3。我想重复这一行的3+1=4次数。同样,对于第二行,差异是5-4 = 1,所以我想重复它1+1=2次。D列的值从min(b)增加到b与c之间的差(即6- 3 =3,因此从3->6)。所以我想得到这个df:
a b c d
0 1 3 6 3
0 1 3 6 4
0 1 3 6 5
0 1 3 6 6
1 2 4 5 4
1 2 4 5 5发布于 2018-10-17 17:57:46
使用reindex + repeat执行此操作,然后使用groupby cumcount分配新值d
df1.reindex(df1.index.repeat(df1.eval('c-b').add(1))).\
assign(d=lambda x : x.c-x.groupby('a').cumcount(ascending=False))
Out[572]:
a b c d
0 1 3 6 3
0 1 3 6 4
0 1 3 6 5
0 1 3 6 6
1 2 4 5 4
1 2 4 5 5https://stackoverflow.com/questions/52860911
复制相似问题