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)
在 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)