我有以下熊貓資料框。
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|5P|hey-910929|abc-939090', 'xcd a2asd_V3','23vg aabsd_V1','22a| df a1asd_V1|5P|hey-910929|abc-939090','a3as d_V1','aa bsd_V3','aasd_V4','aabsd_V4','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|5P|hey-910929|abc-939090 2021-06-13
1 2 22 xcd a2asd_V3 2021-06-13
2 3 33 23vg aabsd_V1 2021-06-13
3 4 44 dfgdf|_aabsd_V0|2P|hyy-510929|nfc-239090 2021-06-14
4 5 55 a3as d_V1 2021-06-15
5 60 60 aa bsd_V3 2021-06-15
6 0 1 aasd_V4 2021-06-13
7 0 5 aabsd_V4 2021-06-16
8 6 6 aa_adn sd_V10 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
我想根據 Name 列創建兩個新列。我想像 V1、V2、V3、V4...V20 那樣提取 Name 列中的字串部分。此外,如果 Name 字串的末尾沒有類似的內容,或者 Name 行為空,則只想創建一個空單元格。所以我想要類似下面的熊貓資料框。
col1 col3 Name Date Version Version
0 1 1 2a| df a1asd_V1|5P|hey-910929|abc-939090 2021-06-13 V1 Version 1
1 2 22 xcd a2asd_V3 2021-06-13 V3 Version 3
2 3 33 23vg aabsd_V1 2021-06-13 V1 Version 1
3 4 44 dfgdf|_aabsd_V0|2P|hyy-510929|nfc-239090 2021-06-14 V0 Version 0
4 5 55 a3as d_V1 2021-06-15 V1 Version 1
5 60 60 aa bsd_V3 2021-06-15 V3 Version 3
6 0 1 aasd_V4 2021-06-13 V4 Version 4
7 0 5 aabsd_V4 2021-06-16 V4 Version 4
8 6 6 aa_adn sd_V10 2021-06-13 V10 Version 10
9 3 3 NaN 2021-06-13
10 2 2 aasd_V12 2021-06-13 V12 Version 12
11 4 4 aasd120Abs 2021-06-16
有可能這樣做嗎?我知道在 SQL 中我們可以使用“LIKE”來做到這一點
WHEN `Name` LIKE '%V10%' THEN 'Verison 10'.
在python中是否有類似的命令或任何其他方式來做到這一點?我嘗試使用“dff['Name'].str.extract”但沒有完全正確在此先感謝!任何幫助表示贊賞!
uj5u.com熱心網友回復:
您可以使用正則運算式提取具有以下任何數字的 V:
import pandas as pd
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': ['2a df a1asd_V1', 'xcd a2asd_V3','23vg aabsd_V1','dfgdf_aabsd_V0','a3as d_V1','aa bsd_V3','aasd_V4','aabsd_V4','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['Version'] = dff['Name'].str.extract(r'(V\d )')
dff['Version2'] = 'Version ' dff['Version'].str[1:]
輸出:
| 第 1 列 | 第 3 列 | 姓名 | 日期 | 版本 | 版本2 | |
|---|---|---|---|---|---|---|
| 0 | 1 | 1 | 2a df a1asd_V1 | 2021-06-13 | V1 | 版本 1 |
| 1 | 2 | 22 | xcd a2asd_V3 | 2021-06-13 | V3 | 版本 3 |
| 2 | 3 | 33 | 23vg aabsd_V1 | 2021-06-13 | V1 | 版本 1 |
| 3 | 4 | 44 | dfgdf_aabsd_V0 | 2021-06-14 | V0 | 版本 0 |
| 4 | 5 | 55 | a3as d_V1 | 2021-06-15 | V1 | 版本 1 |
| 5 | 60 | 60 | aa bsd_V3 | 2021-06-15 | V3 | 版本 3 |
| 6 | 0 | 1 | aasd_V4 | 2021-06-13 | V4 | 版本 4 |
| 7 | 0 | 5 | aabsd_V4 | 2021-06-16 | V4 | 版本 4 |
| 8 | 6 | 6 | aa_adn sd_V15 | 2021-06-13 | V15 | 版本 15 |
| 9 | 3 | 3 | 南 | 2021-06-13 | 南 | 南 |
| 10 | 2 | 2 | aasd_V12 | 2021-06-13 | V12 | 版本 12 |
| 11 | 4 | 4 | aasd120Abs | 2021-06-16 | 南 | 南 |
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/358216.html
上一篇:匹配資料框中的列并分解串列
