【问题标题】:Pandas remove all of a string in a column after a character熊猫在一个字符后删除一列中的所有字符串
【发布时间】:2018-04-13 15:17:46
【问题描述】:

所以我有一个超过 500 行的数据集,其中一列的值如下:

df:

         column1

 0    a{'...'}  
 1    b{'...'}
 2    c{'...'}  
 3    d{'...'}  

我想删除{} 中的所有内容,包括{}

我一直在看这个问题,Pandas delete parts of string after specified character inside a dataframe 并尝试了那里的解决方案,但我不断收到错误(我知道 StringIO 现在是 io.StringIO)。

我试过了

df.column1 = df.column1.str.split('{')[0]

但收到错误消息:KeyError: 0 并不太明白这是什么意思

我也试过了:

df.column1 = df.column1.str.split(pat='{')

但这似乎只删除了'{'所以我留下了

      column1

 0    a'...'}   
 1    b'...'}
 2    c'...'}   
 3    d'...'}   

我也不确定它是否重要,但该列是object 类型。 谁能告诉我我做错了什么以及如何解决这个问题???

【问题讨论】:

    标签: python pandas object replace


    【解决方案1】:

    您可以使用replace

    df['column1'].str.replace(r"\{.*\}","")
    Out[385]: 
    0    a
    1    b
    2    c
    3    d
    Name: column1, dtype: object
    

    【讨论】:

      【解决方案2】:

      您还可以使用pandas.DataFrame.replace 并传递一个字典,该字典指定对各个列执行的操作。

      使用@Wen 的正则表达式模式

      df.replace(dict(column1={'\{.*\}': ''}), regex=True)
      
        column1
      0       a
      1       b
      2       c
      3       d
      

      本着@pault的精神,你也可以使用pandas.Series.str.extract

      df.column1.str.extract('([^\{]+)', expand=False)
      
        column1
      0       a
      1       b
      2       c
      3       d
      

      【讨论】:

      • @Aongoose 你可以投票很多答案(当你有 15+ 代表时),但你只能接受一个答案。通过接受我的回答,你不接受温的回答。那可能不是你的本意。如果没有,请随时点击复选标记再次接受 Wen 的回答。
      • 是的,我非常感谢@piRSquared 的提醒
      【解决方案3】:

      有点晚了(@Wen 的解决方案很棒),但您可以在您最初的尝试中使用pandas.Series.str.split()。你很接近 - 你只需要设置expand=True

      df["column1"] = df["column1"].str.split("{", expand=True)[0]
      #  column1
      #0       a
      #1       b
      #2       c
      #3       d
      

      【讨论】:

        【解决方案4】:

        使用.apply

        df = pd.DataFrame({"a":["a{'...'}", "b{'...'}"]})
        df["a"] = df["a"].apply(lambda x: x.split('{')[0])
        print df
        

        【讨论】:

          猜你喜欢
          • 2020-11-29
          • 2023-01-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-02-23
          • 2019-06-22
          • 2019-08-13
          • 2016-10-21
          相关资源
          最近更新 更多