【问题标题】:Shift values based on condition in a column根据列中的条件移动值
【发布时间】:2017-10-11 22:08:46
【问题描述】:

我有以下数据框df1:

      A     B    C    D    E    F    G    H    I    J
  0   1    11    a    XX   50   Nan  Nan  Nan  Nan  Nan
  1   2    12    b    YY   10   Nan  1    Nan  Nan  Nan
  2   1    11    c    ZZ   70   Nan  Nan  11   12   56
  3   Nan  Nan   Nan  Nan  0    6    10   c    DD   45
  4   3     7    e    MM   12   1    7    d    LL   64
  5   Nan  Nan   Nan  Nan  2    89   Nan  f    KK   13

我想以这样一种方式构建结果数据框df2,如果属性F(任何值但不是“Nan”)的任何行中存在值,则复制F的值, G, H, I, J 用于该特定行并将它们分别粘贴到 A, B, C, DE 中。因此应该复制最后三行的值。

生成的数据框df2 应该是这样的:

       A     B    C    D    E    F    G    H    I    J   
   0   1    11    a    XX   50   Nan  Nan  Nan  Nan  Nan
   1   2    12    b    YY   10   Nan  1    Nan  Nan  Nan
   2   1    11    c    ZZ   70   Nan  Nan   11   12   56
   3   6    10    c    DD   45    6    10   c    DD   45
   4   1     7    d    LL   64    1    7    d    LL   64
   5   89   Nan   f    KK   13    89   Nan  f    KK   13

任何帮助都将不胜感激。

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:
    In [102]: df.loc[df.F.notnull(), list('ABCDE')] = \
                  df.loc[df.F.notnull(), list('FGHIJ')].values
    
    In [103]: df
    Out[103]:
          A     B  C   D   E     F     G    H    I     J
    0   1.0  11.0  a  XX  50   NaN   NaN  NaN  NaN   NaN
    1   2.0  12.0  b  YY  10   NaN   1.0  NaN  NaN   NaN
    2   1.0  11.0  c  ZZ  70   NaN   NaN   11   12  56.0
    3   6.0  10.0  c  DD  45   6.0  10.0    c   DD  45.0
    4   1.0   7.0  d  LL  64   1.0   7.0    d   LL  64.0
    5  89.0   NaN  f  KK  13  89.0   NaN    f   KK  13.0
    

    【讨论】:

      猜你喜欢
      • 2017-04-11
      • 2018-12-13
      • 1970-01-01
      • 1970-01-01
      • 2011-11-17
      • 1970-01-01
      • 2022-11-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多