如何保存与pandas中的特定条件匹配的先前结果

我想知道如何保存之前的结果,该结果与后面的每一行中的某些条件(df['condition'])相匹配。我知道如何使用 for 循环来做到这一点,但我知道在使用 pandas 时应该避免它们。


下面是一个例子。列 df['desired_result] 代表我想要实现的目标。


import pandas as pd

import numpy as np


dates = pd.date_range('1/1/2000', periods=10)

values = np.arange(10.0, 20.0, 1.0)

data = {'date': dates, 'value': values}

df = pd.DataFrame.from_dict(data)


df['condition'] = [False, False, True, True, False, True, False, False, True, False]

df_valid = df[df['condition']]

df['desired_result'] = [np.nan, np.nan, 12, 13, 13, 15, 15, 15, 18, 18]


哆啦的时光机
浏览 103回答 1
1回答

素胚勾勒不出你

# use df.where based on your condition and assign it to a new col# Anywhere column condition is True return the value else return NaN# then add ffill to forward fill NaN valuesdf['r'] = df['value'].where(df['condition'] == True, np.nan).ffill()        date  value  condition  desired_result     r0 2000-01-01   10.0      False             NaN   NaN1 2000-01-02   11.0      False             NaN   NaN2 2000-01-03   12.0       True            12.0  12.03 2000-01-04   13.0       True            13.0  13.04 2000-01-05   14.0      False            13.0  13.05 2000-01-06   15.0       True            15.0  15.06 2000-01-07   16.0      False            15.0  15.07 2000-01-08   17.0      False            15.0  15.08 2000-01-09   18.0       True            18.0  18.09 2000-01-10   19.0      False            18.0  18.0
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python