Извлеките и скопируйте строку, начинающуюся с «Unit», из одного столбца в новый столбец: Pandas - PullRequest
0 голосов
/ 28 ноября 2018

Ниже показано, как выглядят мои входные данные.Я хочу извлечь все строки, начинающиеся с «Unit», в новый столбец, соответствующий положению слова во втором столбце, используя pandas / python / regex.Любая помощь будет принята.

Input:

   A
MARYLAND
Unit6
Unit7
Unit8
NEW SECTOR
Unit1
Unit2
NORTH SECTOR
Unit1
Unit2
PVT SECTOR
PUBLIC SECTOR
Unit1
Unit2
CENTRAL SECTOR
THERMAL
SOUTH SECTOR
Unit1
Unit2
Unit3
ACCOUNT SECTOR
DOLBY DIGITAL
WASHINGTON


Output:

   A              B
MARYLAND            
Unit6           Unit6
Unit7           Unit7
Unit8           Unit8
NEW SECTOR          
Unit1           Unit1
Unit2           Unit2
NORTH SECTOR            
Unit1           Unit1
Unit2           Unit2
PVT SECTOR          
PUBLIC SECTOR           
Unit1           Unit1
Unit2           Unit2
CENTRAL SECTOR          
THERMAL         
SOUTH SECTOR            
Unit1           Unit1
Unit2           Unit2
Unit3           Unit3
ACCOUNT SECTOR          
DOLBY DIGITAL           
WASHINGTON          

Наконец, теперь, когда строки «Единицы» скопированы в новый столбец, я хочу удалить эти значения из столбца A:

    A            B
MARYLAND            
                Unit6
                Unit7
                Unit8
NEW SECTOR          
                Unit1
                Unit2
NORTH SECTOR            
                Unit1
                Unit2
PVT SECTOR          
PUBLIC SECTOR           
                Unit1
                Unit2
CENTRAL SECTOR          
THERMAL         
SOUTH SECTOR            
                Unit1
                Unit2
                Unit3
ACCOUNT SECTOR          
DOLBY DIGITAL           
WASHINGTON  

Ответы [ 2 ]

0 голосов
/ 28 ноября 2018

Другой способ использования столбца A в качестве индексного массива:

df["B"] = df["A"][df['A'].str.contains('^Unit', regex=True)]
df["B"] = df["B"].fillna("")

    A        B
0   MARYLAND    
1   Unit6    Unit6
2   Unit7    Unit7
3   Unit8    Unit8
4   NEW SECTOR  
5   Unit1    Unit1
6   Unit2    Unit2
7   NORTH SECTOR    
8   Unit1    Unit1
9   Unit2    Unit2
10  PVT SECTOR  
11  PUBLIC SECTOR   
12  Unit1    Unit1
13  Unit2    Unit2
14  CENTRAL SECTOR  
15  THERMAL 
16  SOUTH SECTOR    
17  Unit1    Unit1
18  Unit2    Unit2
19  Unit3    Unit3
20  ACCOUNT SECTOR  
21  DOLBY DIGITAL   
22  WASHINGTON  
0 голосов
/ 28 ноября 2018

Использование str.extract и fillna:

df['B'] = df['A'].str.extract('(^Unit\d+)')
df.loc[df['B'].notnull(),'A'] = ''
df['B'].fillna('',inplace=True)

print(df)
                 A      B
0         MARYLAND       
1                   Unit6
2                   Unit7
3                   Unit8
4       NEW SECTOR       
5                   Unit1
6                   Unit2
7     NORTH SECTOR       
8                   Unit1
9                   Unit2
10      PVT SECTOR       
11   PUBLIC SECTOR       
12                  Unit1
13                  Unit2
14  CENTRAL SECTOR       
15         THERMAL       
16    SOUTH SECTOR       
17                  Unit1
18                  Unit2
19                  Unit3
20  ACCOUNT SECTOR       
21   DOLBY DIGITAL       
22      WASHINGTON       
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...