簡體   English   中英

根據行值在數據框中創建新列

[英]Creating a new column in a data frame based on row values

我希望能夠在不使用 for 循環或 df.apply() 的情況下獲得以下結果

每行的結果應該是直到組索引的行值。

   group  0  1  2  3  4  5  6  7
0      2  a  b  c  d  e  f  g  h
1      5  s  t  u  v  w  x  y  z
2      7  a  b  c  d  e  f  g  h

   group                    result
0      2                 [a, b, c]
1      5        [s, t, u, v, w, x]
2      7  [a, b, c, d, e, f, g, h]

DataFrame.query和最后一個聚合list中使用DataFrame.melt 、過濾group列和變量列:

s = (df.melt('group', ignore_index=False)
       .astype({'variable':int})
       .query("group >= variable")
       .groupby(level=0)['value']
       .agg(list))

df = df[['group']].join(s.rename('result'))
print (df)
   group                    result
0      2                 [a, b, c]
1      5        [s, t, u, v, w, x]
2      7  [a, b, c, d, e, f, g, h]

或使用apply

df = (df.set_index('group')
        .rename(columns=int)
        .apply(lambda x: list(x[x.index <= x.name]), axis=1)
        .reset_index(name='result'))
print (df)
   group                    result
0      2                 [a, b, c]
1      5        [s, t, u, v, w, x]
2      7  [a, b, c, d, e, f, g, h]

暫無
暫無

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

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