我正在处理一个熊猫数据帧,我想在每一行中找到最远的非空值,然后反转这些值的顺序,并输出一个数据行,反转的行值不保留空值。第一列。本质上是反转列顺序并将非null值向左移动。
IN:
1 2 3 4 5
1 a b c d e
2 a b c
3 a b c d
4 a b c
OUT:
1 2 3 4 5
1 e d c b a
2 c b a
3 d c b a
4 c b a
答案 0 :(得分:2)
为每一行创建一个具有相同索引但值相反的新系列:
def reverse(s):
# Strip the NaN on both ends, but not in the middle
idx1 = s.first_valid_index()
idx2 = s.last_valid_index()
idx = s.loc[idx1:idx2].index
return pd.Series(s.loc[idx[::-1]].values, index=idx)
df.apply(reverse, axis=1)
结果:
1 2 3 4 5
1 e d c b a
2 c b a NaN NaN
3 d c b a NaN
4 c NaN b a NaN