【问题标题】:How to remove all characters after a given character in a column dataframe with Python如何使用Python删除列数据框中给定字符之后的所有字符
【发布时间】:2017-09-18 16:38:19
【问题描述】:

示例:

import pandas as pd
import numpy as np
data = {'state': ['Auckland', 'Otago (....)','Wellington','Dunedin','Hamilton'],'year': [2000, 2001, 2002, 2001,2002],'pop': [1.5, 1.7,3.6, 2.4, 2.9]}
df = pd.DataFrame(data) 

我想删除状态列中字符串 '(' 之后出现的所有内容。

非常感谢您的帮助。

萨米尔

【问题讨论】:

    标签: string python-3.x dataframe replace


    【解决方案1】:

    Series.map 函数遍历 Series 中的所有值并返回另一个包含某些函数结果的 Series。从那里您可以在切片中使用str.find() 方法。

    import pandas as pd
    
    data = {'state': ['Auckland', 'Otago (....)','Wellington','Dunedin','Hamilton'],'year': [2000, 2001, 2002, 2001,2002],'pop': [1.5, 1.7,3.6, 2.4, 2.9]}
    
    df = pd.DataFrame(data)
    
    df['state'] = df.state.map(lambda x: x[0: x.find('(') - 1] if '(' in x else x)
    
    print(df)
    

    产量:

       pop       state  year
    0  1.5    Auckland  2000
    1  1.7       Otago  2001
    2  3.6  Wellington  2002
    3  2.4     Dunedin  2001
    4  2.9    Hamilton  2002
    

    【讨论】:

      【解决方案2】:

      我对pandas不太了解,但是在google上稍微搜索一下,这里有一段代码可以处理你的情况:

      import pandas as pd
      import numpy as np
      data = {'state': ['Auckland', 'Otago (....)','Wellington','Dunedin','Hamilton'],'year': [2000, 2001, 2002, 2001,2002],'pop': [1.5, 1.7,3.6, 2.4, 2.9]}
      df = pd.DataFrame(data) 
      
      for state in df.state:
          if "(" in state:
              row_num = df.loc[df['state']==state].index[0]
              df.at[row_num, 'state'] = state[:state.index("(")]
      
      print(df.state)
      

      这是输出:

      0      Auckland
      1        Otago
      2    Wellington
      3       Dunedin
      4      Hamilton
      Name: state, dtype: object
      

      【讨论】:

        猜你喜欢
        • 2010-10-28
        • 1970-01-01
        • 1970-01-01
        • 2015-09-05
        • 1970-01-01
        • 2021-03-06
        • 2016-10-15
        相关资源
        最近更新 更多