在Python的dataframe中的行末尾添加特定的列值
我有Dataframe df,如下所示:对于每一行,如果第一次找到的列值为None,则应该由Dataframe中的列2值替换在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
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