【问题标题】:Separate a column of strings that contains either one or two sets of parentheses分隔包含一组或两组括号的字符串列
【发布时间】:2021-05-12 16:18:24
【问题描述】:

我有一个像这样的 df:

     Team, Conf, 20_rec
   0 Miami (FL) (ACC), None, 7-6
   1 UCF (AAC), None, 6-4

我想将 Team 和 Conf 分开来实现以下目标:

     Team, Conf, 20_rec
   0 Miami (FL), ACC, 7-6
   1 UCF , AAC, 6-4

我知道我可以将底行分隔为:df[['Team','Conf'] = df.Team.str.split('(', expand = True) 我尝试设置条件和 if 语句来检查行是否包含给定值,检查给定团队是否包含在异常列表中,并尝试使用反向拆分来捕获最终的括号值,但似乎没有工作。

exceptions = ['Miami (FL) (ACC)', 'Miami (OH) (MAC)']
for exception in exceptions:
     if df[~df['Team'].str.contains(exception):
         df[['Team','Conf'] = df.Team.str.split('(', expand = True)
     else:
         df[['Team','Conf'] = df.Team.str.split('\) \(', expand = True)

指向 if 语句的行,返回:

ValueError: The truth value of a DataFrame is ambiguous. Us a.empty, a.bool(), a.item(),a.any(), or a.all().

我想查看每一行,而不是集体行,也不想将 True/False 返回到 Conf 列,但实际上想要一个会议。

很抱歉没有包含更多代码示例;我偏离了最初的意图,以至于我不知道什么是接近的,但认为这是更接近的尝试之一。谢谢!!

【问题讨论】:

    标签: python pandas dataframe if-statement split


    【解决方案1】:

    试一试:

    df[['Team', 'Conf']] = df.Team.str.strip().str.rsplit(' ', 1, expand=True)
    

    【讨论】:

    • 我确实觉得有点傻,但你是我的英雄!谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-24
    • 1970-01-01
    • 2013-05-31
    • 2017-04-10
    • 1970-01-01
    • 1970-01-01
    • 2017-03-07
    相关资源
    最近更新 更多