gpt4 book ai didi

python - pandas DataFrame 中的 if-else 条件引用两行

转载 作者:太空狗 更新时间:2023-10-30 02:00:53 25 4
gpt4 key购买 nike

我有一个示例,我需要根据 if-else 条件填充数据框列,该条件引用当前行和前一行。这是示例数据集:

time = pd.Series(pd.date_range(start='20140101', end='20190901', freq='Q').astype('period[Q]'), name='time')
results = pd.Series(['0','W','W','W','0','0','L','L','L','L','W','W','W','0','0','W','W','W','0','L','L','0'], name='result')
df = pd.concat([time, results], axis=1)

我想创建一个列,df['last win'],其中包含当前行的 time 值,如果它是 W,或最后一个 time,它有一个 W。因此,所需的输出将是:

     time result last_win
0 2014Q1 0 NaT
1 2014Q2 W 2014Q2
2 2014Q3 W 2014Q3
3 2014Q4 W 2014Q4
4 2015Q1 0 2014Q4
5 2015Q2 0 2014Q4
6 2015Q3 L 2014Q4
7 2015Q4 L 2014Q4
8 2016Q1 L 2014Q4
9 2016Q2 L 2014Q4
10 2016Q3 W 2016Q3
11 2016Q4 W 2016Q4
12 2017Q1 W 2017Q1
13 2017Q2 0 2017Q1
14 2017Q3 0 2017Q1
15 2017Q4 W 2017Q4
16 2018Q1 W 2018Q1
17 2018Q2 W 2018Q2
18 2018Q3 0 2018Q2
19 2018Q4 L 2018Q2
20 2019Q1 L 2018Q2
21 2019Q2 0 2018Q2

我不确定如何以有条件地工作的方式使用 .apply.shift 功能。

最佳答案

使用 where 然后使用 fillna 指定前向填充来填充丢失和连接:

df['last_win'] = np.where(df['result'] == 'W', df['time'], np.NaN)
df.fillna(method="ffill", inplace=True)

关于python - pandas DataFrame 中的 if-else 条件引用两行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57836515/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com