在Python的dataframe中的行末尾添加特定的列值

在Python的dataframe中的行末尾添加特定的列值,python,pandas,Python,Pandas,我有Dataframe df,如下所示:对于每一行,如果第一次找到的列值为None,则应该由Dataframe中的列2值替换 ID 1 2 col0 col1 col2 col3 col4 col5 col6 0 A1 ABC RED 10 20 None None None None None 1 B1 ABC

我有Dataframe df,如下所示:对于每一行,如果第一次找到的列值为None,则应该由Dataframe中的列2值替换

 ID     1           2      col0      col1      col2      col3     col4     col5 col6
0 A1    ABC         RED     10        20       None     None     None      None None
1 B1    ABC         ORANGE  40        None     None     None     None      None None
2 C1    ABC         WHITE   50        34        35       57       78         98 None
3 D1    ABC         BLUE    20        None     None     None      None     None None
我想要输出:

ID       1          col0      col1      col2     col3     col4     col5   col6
0 A1    ABC        10        20       RED
1 B1    ABC        40        ORANGE
2 C1    ABC        50        34        35       57       78         98  WHITE
3 D1    ABC        20        BLUE

想法是用限制参数向前填充非缺失值,用测试缺失值测试非缺失值,并用测试缺失值链-因此,对于列
2
by中的附加值,掩码仅匹配
None
s,最后用空字符串替换
None
s,方法是:


想法是用限制参数向前填充非缺失值,用测试缺失值测试非缺失值,并用测试缺失值链-因此,对于列
2
by中的附加值,掩码仅匹配
None
s,最后用空字符串替换
None
s,方法是:


对于给定的条件,这很好。如果我在col6之前有值,第2列的值需要放在col6之后,例如ID 1 2 col0 col1 col2 col3 col4 col5 col6 0 C1 ABC WHITE 50 34 35 57 78,该怎么办9899@Rashmi-然后在我的解决方案之前创建helper新列,如
df=df.assign(new=None)
谢谢!如果我有更多像col 2这样的列,我需要move@Rashmi-不幸的是,此解决方案无法使用,需要其他解决方案,最好是发布新问题。此解决方案适用于给定条件。如果我在col6之前有值,第2列的值需要放在col6之后,例如ID 1 2 col0 col1 col2 col3 col4 col5 col6 0 C1 ABC WHITE 50 34 35 57 78,该怎么办9899@Rashmi-然后在我的解决方案之前创建helper新列,如
df=df.assign(new=None)
谢谢!如果我有更多像col 2这样的列,我需要move@Rashmi-不幸的是,此解决方案无法使用,需要其他解决方案,最好是发布新问题。
m = df.ffill(axis=1, limit=1).notna() & df.isna()

df = df.mask(m, df.pop(2), axis=0).fillna('')
print (df)
   ID    1  col0    col1 col2 col3 col4 col5   col6
0  A1  ABC    10      20  RED                      
1  B1  ABC    40  ORANGE                           
2  C1  ABC    50      34   35   57   78   98  WHITE
3  D1  ABC    20    BLUE