簡體   English   中英

如何按不同的值對一個 Pandas dataframe 列的元素進行切片?

[英]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.

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