在Pandas DataFrame中反转行值

时间:2019-08-23 21:28:47

标签: python pandas dataframe

我正在处理一个熊猫数据帧,我想在每一行中找到最远的非空值,然后反转这些值的顺序,并输出一个数据行,反转的行值不保留空值。第一列。本质上是反转列顺序并将非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

1 个答案:

答案 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