【问题标题】:Remove everything after the first whitespace in pandas dataframe删除熊猫数据框中第一个空格之后的所有内容
【发布时间】:2020-05-31 17:25:59
【问题描述】:

这是数据框:

     State  RegionName            
0    NY     New York             
1    CA     Los Angeles      
2    IL     Chicago 865         
3    PA     Philadelphia Wrin   
4    AZ     Phoenix City 

我希望输出如下所示:

     State   RegionName           
0    NY      New             
1    CA      Los         
2    IL      Chicago            
3    PA      Philadelphia 
4    AZ      Phoenix     

如何在不使用 for 循环的情况下做到这一点??

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    使用Series.str.split 通过索引选择第一个值:

    print (df['RegionName'].str.split())
    0             [New, York]
    1          [Los, Angeles]
    2          [Chicago, 865]
    3    [Philadelphia, Wrin]
    4         [Phoenix, City]
    Name: RegionName, dtype: object
    
    df['RegionName'] = df['RegionName'].str.split().str[0]
    print (df)
      State    RegionName
    0    NY           New
    1    CA           Los
    2    IL       Chicago
    3    PA  Philadelphia
    4    AZ       Phoeni
    

    【讨论】:

    • 你能解释一下为什么在split()函数后面写str[0]吗?
    • @Kakarot_7 - 当然,如果使用split 从每个值中获取列表并且需要选择第一个列表,所以使用str[0]
    【解决方案2】:

    您也可以 str.extract 字符串的开头,但使用正则表达式排除空格 ^[^\s]+

    df['RegionName']=df['RegionName'].str.extract('(^[^\s]+)')
    

    【讨论】:

      【解决方案3】:

      这是使用pd.Series.str.extract的替代方法

      df['RegionName'] = df['RegionName'].str.extract(r'(.*)\s')
      

      但我的第一直觉是使用@jezrael 提到的内容。

      Regex demo

      【讨论】:

        【解决方案4】:

        您可以使用str.replace 将多余的单词替换为''

        df["RegionName"] = df.RegionName.str.replace('\s.*','')
        df
             RegionName state
        0           New    NY
        1           Los    CA
        2       Chicago    IL
        3  Philadelphia    PA
        4       Phoenix    AZ
        

        【讨论】:

          猜你喜欢
          • 2020-03-03
          • 1970-01-01
          • 2012-05-19
          • 2021-10-15
          • 2013-10-04
          • 1970-01-01
          • 1970-01-01
          • 2023-03-23
          • 1970-01-01
          相关资源
          最近更新 更多