【问题标题】:How to get a value from a previous row when the corresponding value is NaN based on a condition in another column?当对应的值为NaN时,如何根据另一列中的条件从前一行获取一个值?
【发布时间】:2022-07-13 23:29:22
【问题描述】:

我正在使用时间序列数据框。当 col1 的值为 1 时,我正在寻找一种方法来找出 col2 和 col3 的值。所以,我正在寻找的输出是 col2:7 和 col3:11。 我已经给出了下面的代码以供参考。 提前致谢!

d = {'col1': [0,0,1,0,0], 'col2' : [0,7,'N/A',9,10], 'col3': [11,'N/A','N/A',14,15]}
index = pd.DatetimeIndex(['2014-07-04', '2014-08-04', '2015-07-04', '2015-08-04', '2015-09-04'])
d = pd.DataFrame(data = d, index = index)
d = d.replace('N/A', np.nan)

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    你可以ffill这些值,获取第一行的索引,值为1:

    d.ffill().loc[d['col1'].eq(1).idxmax(), ['col2', 'col3']]
    

    输出:

    col2     7.0
    col3    11.0
    Name: 2015-07-04 00:00:00, dtype: float64
    

    如果您希望有几行值为 1:

    d.ffill().loc[d['col1'].eq(1), ['col2', 'col3']]
    

    输出:

                col2  col3
    2015-07-04   7.0  11.0
    

    【讨论】:

      猜你喜欢
      • 2019-12-02
      • 1970-01-01
      • 2021-11-23
      • 1970-01-01
      • 2021-09-22
      • 2021-08-25
      • 1970-01-01
      • 1970-01-01
      • 2019-05-23
      相关资源
      最近更新 更多