![](/img/trans.png)
[英]How to remove all string or numbers after certain Character in 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.