簡體   English   中英

根據列值重復數據框的行

[英]Repeating rows of a dataframe based on a column value

我有一個像這樣的數據框:

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

現在,我想創建一個基於col b和c加1的差重復每行的df。所以第一行的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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM