基于不同列对列应用值

2024-09-29 19:28:49 发布

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

我正在尝试做一些有一些奇怪要求的数据操作:

 Index   ht1   w1   ht2   w2   ht3   w3   top width  
 ------- ----- ---- ----- ---- ----- ---- ----------- 
      0     9    5                                 5  
      1     7    2     3                              
      2     3    4                                 4  
      3     4    3     5    6                      6  
      4     6    8     2    1     3    5           5  

我有成对列格式的数据,即高度和宽度。有三对高度和宽度列。仅当“高度”列中有值时,最后一列才拾取行中的最后一个宽度值。此外,如果任何高度列中有一个值,但相应的宽度为空,则顶部宽度将为空,例如,对于行索引1:宽度对应的高度为空,因此顶部宽度列将为空

在我拥有的数据中,最后一列(顶宽)是空的,需要用最后一个宽度值填充,使其看起来像上面的表

对于代码,我尝试使用map和apply。特别是,我尝试在apply方法中使用一个条件,但它不起作用。有没有人可以根据上面列出的条件帮助填写顶宽栏

谢谢


Tags: 数据index宽度高度top格式条件width
1条回答
网友
1楼 · 发布于 2024-09-29 19:28:49

我认为需要:

#filter DataFrames by columns
a = df.filter(like='ht')
b = df.filter(like='w')

#boolean mask with XOR
m = (a.notnull().values ^ b.notnull().values).any(axis=1)

#get last values with replace to NaN by mask
df['new'] = b.ffill(axis=1).iloc[:, -1].mask(m)
print (df)
       ht1  w1  ht2   w2  ht3   w3  new
Index                                  
0        9   5  NaN  NaN  NaN  NaN  5.0
1        7   2  3.0  NaN  NaN  NaN  NaN
2        3   4  NaN  NaN  NaN  NaN  4.0
3        4   3  5.0  6.0  NaN  NaN  6.0
4        6   8  2.0  1.0  3.0  5.0  5.0

相关问题 更多 >

    热门问题