Python/Pandas: 如何在满足条件之前维护列中的值?

Python/Pandas: How to maintain a value in column until a condition is met?

在 python/pandas 中,我试图在扑克游戏中添加一个标记街道(翻牌前、翻牌、转牌和河牌)的列。这就是我的数据集的样子。我正在尝试添加“街道”列。

Event Player Datetime Street
Starting Hand 1 NaN 2022-04-08T03:12:22 Preflop
Bet B 2022-04-08T03:13:22 Preflop
Call C 2022-04-08T03:14:22 Preflop
Fold A 2022-04-08T03:15:22 Preflop
Flop NaN 2022-04-08T03:16:22 Flop
Bet B 2022-04-08T03:17:22 Flop
Call C 2022-04-08T03:18:22 Flop
Turn NaN 2022-04-08T03:19:22 Turn
Bet B 2022-04-08T03:20:22 Turn
Fold C 2022-04-08T03:21:22 Turn
Ending Hand 1 NaN 2022-04-08T03:22:22 Turn
Starting Hand 2 NaN 2022-04-08T03:23:22 Preflop
Check C 2022-04-08T03:24:22 Preflop

我无法弄清楚如何填写“街道”列中相应事件之间的行。我当前的解决方案只采用明确说明“翻牌”、“转牌”和“河牌”的事件.有没有办法遍历行并在满足条件之前在列中维护一个值?我想这与Groupby有关,但我不确定。

谢谢!

当您直接从 Event 列中的某些关键字推断 Street 值时,请确保分配 NumPy 的缺失值占位符,np.nan,到那些你不能直接推断值的字段。

然后你可以使用pandas' fillna()方法,传递method='ffill'参数进行前向填充,这意味着每个当前值将传播到所有后续的NaN值。

def infer_street(event):
    if 'Starting' in event:
        return 'Preflop'
    if 'Flop' in event:
        return 'Flop'
    if 'Turn' in event:
        return 'Turn'
    return np.nan

df['Street'] = df['Event'].apply(infer_street)
df['Street'].fillna(method='ffill', inplace=True)