【问题标题】:Python - Get Last Element after str.split()Python - 在 str.split() 之后获取最后一个元素
【发布时间】:2019-05-11 22:22:46
【问题描述】:

我使用 pandas,我有数据,数据看起来像这样

FirstName LastName StudentID
FirstName2 LastName2 StudentID2

然后我使用str.split()根据“空间”拆分它

所以数据在 DataFrame 中会是这样的

[[FirstName, LastName, StudentID],
[FirstName2, LastName2, StudentID2]]

如何只获取每个学生的StudentID并将其保存在新列中?

【问题讨论】:

    标签: python pandas split


    【解决方案1】:

    使用列表推导获取每个拆分字符串的最后一个元素:

    ids = [val[-1] for val in your_string.split()]
    

    【讨论】:

    • 或者你可以使用ids=[val[1] for val in your_string.rsplit(maxsplit=1)] 可能会更快。 :)
    【解决方案2】:

    为什么不尝试一个简单的列表理解

    students = [
        ["FirstName", "LastName", "StudentID"],
        ["FirstName2", "LastName2", "StudentID2"]
    ]
    
    print([student[2] for student in students])
    

    将打印出来

    ['StudentID', 'StudentID2']
    

    【讨论】:

      【解决方案3】:

      你可以这样做:

      import pandas as pd
      
      data = ['FirstName LastName StudentID',
      'FirstName2 LastName2 StudentID2']
      
      df = pd.DataFrame(data=data, columns=['text'])
      
      df['id'] = df.text.apply(lambda x: x.split()[-1])
      
      print(df)
      

      输出

      text          id
      0     FirstName LastName StudentID   StudentID
      1  FirstName2 LastName2 StudentID2  StudentID2
      

      或者,作为替代:

      df['id'] = [x.split()[-1] for x in df.text]
      print(df)
      

      输出

      text          id
      0     FirstName LastName StudentID   StudentID
      1  FirstName2 LastName2 StudentID2  StudentID2
      

      【讨论】:

        【解决方案4】:

        使用数据框构造函数

        pd.DataFrame(df.text.str.split(' ').tolist()).iloc[:,0]
        Out[15]: 
        0     FirstName
        1    FirstName2
        Name: 0, dtype: object
        

        【讨论】:

          【解决方案5】:

          尝试以下解决方案:

          item["x"]["y"].split(' ')[-1]
          

          【讨论】:

            【解决方案6】:

            我想我会添加这个简单的解决方案,它不使用列表或列表解析来拆分现有列/系列并将拆分中的最后一项存储到 DataFrame 中的新列/系列中

            import pandas as pd
            
            data = ['FirstName LastName StudentID',
            'FirstName2 LastName2 StudentID2']
            
            df = pd.DataFrame(data=data, columns=['text'])
            
            df['id'] = df.text.str.split(" ").str.get(-1)
            

            输出:

            索引文本ID

            0 名 姓 学生ID 学生ID

            0 FirstName2 LastName2 StudentID2 StudentID2

            【讨论】:

              猜你喜欢
              • 2020-09-06
              • 1970-01-01
              • 2012-04-02
              • 2010-11-30
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多