【问题标题】:How to select comma separated values only in a loop?如何仅在循环中选择逗号分隔值?
【发布时间】:2021-06-17 11:10:38
【问题描述】:

这就是我想要做的。 假设这是我的数据列。

0                               ET Bureau
1                By Sobia Khan, ET Bureau
2                               ET Bureau
3            By Sarita C Singh, ET Bureau
4    By Dipanjan Roy Chaudhury, ET Bureau

在这里,我想运行一个循环并仅选择那些具有逗号分隔值的值,例如,在索引 1 处的上述数据中,有一个逗号分隔值,并且从该值中,我只需要提取字符串是在逗号之后来自 Sobia Khan,ET Bureau 我只需要 ET Bureau。

我尝试了df['column_name'].str.split(',').str[1],但它给了我那些没有逗号分隔的 nan 值。所以我只想为逗号分隔值运行一个循环。

【问题讨论】:

  • 在数据框上使用选择器来仅处理包含逗号的行。

标签: dataframe for-loop split


【解决方案1】:

您可以使用一个模式来匹配逗号之前的所有字符,然后是逗号和可选的空白字符。

在第一个逗号之后捕获一组 1 个或多个字符,并将其用于替换。

[^,\r\n]*,\s*(.+)
  • [^,\r\n]* 匹配除逗号或换行符以外的任何字符
  • ,\s* 匹配逗号和可选的空白字符
  • (.+) 捕获组 1,匹配任意 char 1+ 次(替换中称为 \1

例如

data = [
    ['ET Bureau'],
    ['By Sobia Khan, ET Bureau'],
    ['ET Bureau'],
    ['By Sarita C Singh, ET Bureau'],
    ['By Dipanjan Roy Chaudhury, ET Bureau']
]
df = pd.DataFrame(data, columns = ['column_name'])
df['column_name'] = df['column_name'].str.replace(r"[^,\r\n]*,\s*(.+)", r"\1")
print(df)

输出

0   ET Bureau
1   ET Bureau
2   ET Bureau
3   ET Bureau
4   ET Bureau

【讨论】:

    猜你喜欢
    • 2016-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-12
    • 2020-01-15
    • 2021-06-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多