Python 基于列值重复数据帧的行

Python 基于列值重复数据帧的行,python,pandas,Python,Pandas,我有这样一个数据框: 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,它根据列b和c加1之间的差异重复每一行。所以第一行b和c之间的差值是6-3=3。我想把那一行重复3+1=4次。同样地,对于第二行,差是5-4=1,所以我想重复它

我有这样一个数据框:

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,它根据列b和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

使用
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  5