我正在处理一个熊猫数据框,在这里我想在每一行中找到最远的非空值,然后反转这些值的顺序,并输出一个数据行,反转的行值不在第一列中保留空值。本质上是反转列顺序并将非null值向左移动。

在:

   1  2  3  4  5
1  a  b  c  d  e
2  a  b  c
3  a  b  c  d
4  a  b     c


出:

   1  2  3  4  5
1  e  d  c  b  a
2  c  b  a
3  d  c  b  a
4  c     b  a

最佳答案

对于每一行,创建一个具有相同索引但值相反的新系列:

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

关于python - 在Pandas DataFrame中反转行值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57633212/

10-15 22:56