簡體   English   中英

Pandas刪除字符后的列中的所有字符串

[英]Pandas remove all of a string in a column after a character

所以我有一個超過500行的數據集,其中一列的值如下所示:

DF:

         column1

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

我想刪除{}內的所有內容。

我一直在看這個問題, Pandas刪除數據幀中指定字符后的字符串部分並嘗試了解決方案,但我一直收到錯誤(我知道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類型。 任何人都可以告訴我我做錯了什么以及如何解決問題???

你可以使用replace

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

您還可以使用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

有點晚了(@ 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

使用.apply

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM