[英]How can I slice elements of one Pandas dataframe column by different values?
我有一個“臟”的 csv 文件加載到 Pandas dataframe 中。 一列“名稱”有時帶有前綴(例如,實際名稱前的“(3.)”)。
我了解此前綴的分類法,並且知道如何找到索引,從該索引開始我想保留字符串的 rest:
df["Indexes"]= df["Name"].str.find(')')
但是:我如何減少對那個索引的限制?
例如,如果“Name”是“(3.) Peter”,我希望它變成“Peter”。
假設,我想使用切片。 我的問題是我需要切片的值每行不同。 -- 如果前綴的長度始終為 4,則下面將起作用,但它不是(有時沒有前綴,有時長度為 5)。
pd.Series(df["Name"]).str.slice(4)
我怎樣才能做到這一點?
如果您知道該模式,則可以使用extract
獲取干凈的名稱:
# The "dirty" CSV
string = """
(3.) Peter
(10.) David
Jane
(100.) Mary Wether
"""
df = pd.read_csv(StringIO(string), header=None, names=['Name'])
# Clean it
df['CleanName'] = df['Name'].str.extract(r'(\(.*\) )?(?P<Name>.+?)( \(.*\))?')['Name']
結果:
Name CleanName
0 (3.) Peter Peter
1 (10.) David David
2 Jane Jane
3 (100.) Mary Wether Mary Wether
前往Regex 101了解正則表達式模式的解釋。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.