在数据帧中移动和恢复多行

2024-10-02 00:42:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下数据帧,希望将0值移到右边,然后还原每一行:

    H00 H01 H02 H03 H04 H05 H06
NR                          
1   33  28  98  97  0   0   0
2   29  24  22  98  97  0   0
3   78  76  98  97  0   0   0
4   16  15  98  97  0   0   0
5   81  72  70  98  97  0   0

这是我希望得到的结果:

    H00 H01 H02 H03 H04 H05 H06
NR                          
1   97  98  28  33  0   0   0
2   97  98  22  24  29  0   0
3   97  98  76  78  0   0   0
4   97  98  15  16  0   0   0
5   97  98  70  72  81  0   0

我尝试了varius shift和应用组合,但没有成功。有没有一个简单的方法来实现这一点


Tags: 数据方法shiftnrh01h06variush00
2条回答

我们可以在此answer中使用justify函数,然后使用np.flip在水平轴上反转数据:

a = df.to_numpy()
a = np.flip(justify(a, side='right'), axis=1)
df = pd.DataFrame(a, columns=df.columns)
   H00  H01  H02  H03  H04  H05  H06
0   97   98   28   33    0    0    0
1   97   98   22   24   29    0    0
2   97   98   76   78    0    0    0
3   97   98   15   16    0    0    0
4   97   98   70   72   81    0    0

可以反转大于零的值

def reverse_part(series):
  series[series > 0] = series[series > 0][::-1]
  return series

df.apply(reverse_part, axis=1, raw=True)

输出:

    H00  H01  H02  H03  H04  H05  H06
NR                                   
1    97   98   28   33    0    0    0
2    97   98   22   24   29    0    0
3    97   98   76   78    0    0    0
4    97   98   15   16    0    0    0
5    97   98   70   72   81    0    0

相关问题 更多 >

    热门问题