![](/img/trans.png)
[英]How to extract part of a string in Pandas column and make a new column
[英]Replace part of pandas row and make a new column
我有以下 pandas dataframe。
d = {'col1': [1, 2,3,4,5,60,0,0,6,3,2,4],'col3': [1, 22,33,44,55,60,1,5,6,3,2,4],'Name': ['22a| df a1asd_V1', 'xcd a2a_sd_V3','23vg aa_bsd_V1','22a| df a1asd_V1|5mo','a3as d_V1','aa b_12mo','aasd_V4','aa_6mo_bsd','aa_adn sd_V15',np.nan,'aasd_V12','aasd120Abs'],'Date': ['2021-06-13', '2021-06-13','2021-06-13','2021-06-14','2021-06-15','2021-06-15','2021-06-13','2021-06-16','2021-06-13','2021-06-13','2021-06-13','2021-06-16']}
dff = pd.DataFrame(data=d)
dff
col1 col3 Name Date
0 1 1 22a| df a1asd_V1 2021-06-13
1 2 22 xcd a2a_sd_V3 2021-06-13
2 3 33 23vg aa_bsd_V1 2021-06-13
3 4 44 22a| df a1asd_V1|5mo 2021-06-14
4 5 55 a3as d_V1 2021-06-15
5 60 60 aa b_12mo 2021-06-15
6 0 1 aasd_V4 2021-06-13
7 0 5 aa_6mo_bsd 2021-06-16
8 6 6 aa_adn sd_V15 2021-06-13
9 3 3 NaN 2021-06-13
10 2 2 aasd_V12 2021-06-13
11 4 4 aasd120Abs 2021-06-16
我想替換 _, | 進入太空,如果有 5 個月、6 個月、12 個月 .. 進入 5 個月、6 個月、12 個月,就像 Name 列那樣,並創建一個名為 New Name 的新列。 像下面的數據框。
col1 col3 Name Date NewName
0 1 1 22a| df a1asd_V1 2021-06-13 22a df a1asd V1
1 2 22 xcd a2a_sd_V3 2021-06-13 xcd a2a sd V3
2 3 33 23vg aa_bsd_V1 2021-06-13 23vg aa bsd V1
3 4 44 22a| df a1asd_V1|5mo 2021-06-14 22a df a1asd V1 5 months
4 5 55 a3as d_V1 2021-06-15 a3as d V1
5 60 60 aa b_12mo 2021-06-15 aa b 12 months
6 0 1 aasd_V4 2021-06-13 aasd V4
7 0 5 aa_6mo_bsd 2021-06-16 aa 6 months bsd
8 6 6 aa_adn sd_V15 2021-06-13 aa adn sd V15
9 3 3 NaN 2021-06-13 NaN
10 2 2 aasd_V12 2021-06-13 aasd V12
11 4 4 aasd120Abs 2021-06-16 aasd120Abs
是否可以在 lambda function 中做到這一點? 由於我的實際數據框有超過 100 萬條記錄,因此我需要一些更高效的工作。
提前致謝。 任何想法都會很合適。
這應該有效:
dff["NewName"] = dff["Name"].apply(lambda x: x.replace("|"," ").replace("_"," "))
df['NewName'] = [x.replace('|', '').replace('_', '') for x in df['Name']]
您可以使用pd.Series.replace
:
print (df["Name"].replace({"[|_]":" ", "(\d+)mo":"\\1 months"}, regex=True))
0 22a df a1asd V1
1 xcd a2a sd V3
2 23vg aa bsd V1
3 22a df a1asd V1 5 months
4 a3as d V1
5 aa b 12 months
6 aasd V4
7 aa 6 months bsd
8 aa adn sd V15
9 NaN
10 aasd V12
11 aasd120Abs
Name: Name, dtype: object
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.