簡體   English   中英

如何隔離熊貓數據框中的部分字符串

[英]How to isolate part of string in pandas dataframe

我有一個包含一列字符串的數據框。 我想取出每一行中每個字符串的一部分,即年份,然后創建一個新列並將其分配給該列。 我的問題是隔離字符串的最后一部分。 一個例子可能是:'TON GFR 2018 N' 對於這個字符串,我可以通過運行以下命令之一來執行(為此我想隔離 18 而不是 2018)。

new_data['Year'] = pd.DataFrame([str(ele[1])[:2] for ele in list(new_data['Name'].str.split('20'))])

new_data['Year'] = new_data['Name'].str.split('20').str[1]
new_data['Year'] = new_data['Year'].str[:2]

但是,我也遇到過這樣的名字:“TON RO20 2018 N”或 TON 2020 N,然后它就不起作用了。 我還在數據幀的不同行中遇到了不同數量的空格,因此無法計算字符串中的空格數。

我的問題有什么聰明的解決方案嗎?

使用.str.extract()提取以20開頭的4位字符串,得到最后2位,如下:

new_data['Year'] = new_data['Name'].str.extract(r'20(\d\d)')

如果您想確保 4 位字符串不是較長字符串/數字的一部分,您可以進一步使用正則表達式元字符\\b (詞邊界)來包圍目標字符串,如下所示:

new_data['Year'] = new_data['Name'].str.extract(r'\b20(\d\d)\b')

演示

輸入數據:

print(new_data)

              Name
0   TON GFR 2018 N
1  TON RO20 2018 N
2       TON 2020 N

結果:

print(new_data)

              Name Year
0   TON GFR 2018 N   18
1  TON RO20 2018 N   18
2       TON 2020 N   20

如果這與終點的距離始終相同,您可以使用:

new_data["Year"] = new_data["Name"].str.slice(start=-4, stop=-2)

暫無
暫無

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

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