根据列

时间:2017-10-11 22:08:46

标签: python pandas dataframe

我有以下数据框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") ,然后复制该特定行的FGHIJ的值,并将其粘贴到A,{分别为{1}},BCD。因此,应复制最后三行的值。

结果数据框E应该是这样的:

df2

任何帮助都一定会受到赞赏。

1 个答案:

答案 0 :(得分:0)

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