【问题标题】:Change values of a certain range of columns based on another range of columns of the same data frame根据同一数据框的另一范围的列更改特定范围的列的值
【发布时间】:2022-11-20 01:26:56
【问题描述】:

我有这个df

       x      y1      y2        y3        y4             d1        d2          d3          d4
0  -17.7       7     NaN       NaN       NaN              5       NaN           4         NaN
1  -15.0     NaN     NaN       NaN         3              4       NaN         NaN           8
2  -12.5     NaN     NaN         2       NaN            NaN       NaN           1           9

根据y1y4 之间的值,我只希望d1d4 之间每行有1 个值。

例子:在第一行中,值为 y1。所以留下的值是d1

输出将是:

       x      y1      y2        y3        y4               d1        d2          d3          d4
0  -17.7       7     NaN       NaN       NaN                5       NaN         NaN         NaN
1  -15.0     NaN     NaN       NaN         3              NaN       NaN         NaN           8
2  -12.5     NaN     NaN         2       NaN              NaN       NaN           1         NaN

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    您可以将 where 与布尔矩阵一起使用:

    df[['d1', 'd2', 'd3', 'd4']] = df.filter(like='d').where(df.filter(like='y').notna().to_numpy())
    

    输出:

          x   y1  y2   y3   y4   d1  d2   d3   d4
    0 -17.7  7.0 NaN  NaN  NaN  5.0 NaN  NaN  NaN
    1 -15.0  NaN NaN  NaN  3.0  NaN NaN  NaN  8.0
    2 -12.5  NaN NaN  2.0  NaN  NaN NaN  1.0  NaN
    

    【讨论】:

      猜你喜欢
      • 2017-10-14
      • 2021-06-03
      • 2019-03-22
      • 2019-03-06
      • 1970-01-01
      • 1970-01-01
      • 2022-10-06
      • 2023-04-08
      • 2022-11-21
      相关资源
      最近更新 更多