如何仅在某些行或条件下应用 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
)
这将导致它仅在第一个 -
时分裂。
我一直在 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
)
这将导致它仅在第一个 -
时分裂。