如何仅在某些行或条件下应用 str.split in Python?

How to only apply str.split in Python on certain Rows or conditions?

我一直在 Python 中进行网络抓取,遇到了一个问题,导致我的脚本中断。我通常在 - 上用 str.split() 分隔特定的列,这给了我我想要的列,通常只用 NA 填充我不需要的所有内容(这很好)。

今天我遇到了一个极端情况,其中弹出了一个带有连字符的播放器,这使得它无法正常工作。下面是一个可重现的例子,数据通常有 500 多行,所以这个实例可能会出现多次。

import pandas as pd
df = pd.DataFrame({"score": ["Jump ball: Shai-Gilgeous Alexander vs Jeremiah Robinson-Earl", "0-0"]})

# this doesnt work anymore because of 2 players with a hyphen popped up,
# which makes this return more than the 2 columns i want

df[["scoreAway", "scoreHome"]] = df["score"].str.split(
    "-", expand=True
)

错误:ValueError: Columns must be same length as key

我的解决方案是我需要用空格替换连字符,但仅限于得分 = str.contains("Jump ball:") 的行。所以 Shai-Gilgeous Alexander 将变为 Shai Gilgeous Alexander,而 0-0 将保持不受影响。但是我很难找到有关如何做到这一点的资源。

如果有人有快速修复或建议,我将不胜感激!

尝试将 n=1 添加到 .str.split() 调用:

df[["scoreAway", "scoreHome"]] = df["score"].str.split(
    "-", expand=True, n=1
)

这将导致它仅在第一个 - 时分裂。