Pandas dataframe: присвоение определенного значения столбцам / строкам, соответствующим регулярному выражению - PullRequest
0 голосов
/ 21 апреля 2019

Я новичок в Python, так что простите, если ответ прост.Давайте предположим, что следующий фрейм данных:

columns_info = pd.DataFrame(index=infos,columns=df2.columns)

Где информация:

dict_keys(['Reference_COS_ID', 'Station_Description', 'Reference_Axis_ID', 'Station_ID', 'Cut', 'Coordinates'])

И df2.columns:

Index(['Condition', 'Case', 'Flight Point', 'Mass case', 'DB Code',
       'Minmax/Nz', 'Mass,Kg', 'Mach #', 'VTAS', 'QDYN',
       ...
       'VT.0060.26', 'VT.0070.26', 'VT.0080.26', 'VT.0090.26', 'VT.0100.26',
       'VT.0110.26', 'Unnamed: 499', 'DB Code.1', 'Mass,Kg.1', 'Mach #.1'],
      dtype='object', length=503)

Как мне присвоить значениевсе столбцы, которые соответствуют регулярному выражению?Я хотел бы, чтобы что-то вроде этого:

columns_info['VT\.....\.26']['Station_ID']=0

Спасибо!

Ответы [ 2 ]

1 голос
/ 22 апреля 2019

Использование регулярного выражения, совпадающего для цифр между "VT". и ".26:

df.loc['Station_ID', df.columns.str.contains("VT\.(\\d+)\.26") ] = 1
0 голосов
/ 21 апреля 2019

Вы можете использовать DataFrame.filter с регулярным выражением, чтобы получить столбцы, которые начинаются с VT и заканчиваются 26:

# Filter only columns which start with VT and end with 26
df1 = columns_info.filter(regex='^VT.*26$')
# Assign 0 to index Station_ID
df1.loc['Station_ID'] = 0

# Get dataframe without the columns in df1
df2 = columns_info.drop(df1.columns, axis=1)

# Concat both dataframes to final dataframe
columns_info = pd.concat([df1, df2], axis=1)

Вывод:

print(columns_info)
                    VT.0060.26 VT.0070.26 VT.0080.26 VT.0090.26 VT.0100.26  \
Reference_COS_ID           NaN        NaN        NaN        NaN        NaN   
Station_Description        NaN        NaN        NaN        NaN        NaN   
Reference_Axis_ID          NaN        NaN        NaN        NaN        NaN   
Station_ID                   0          0          0          0          0   
Cut                        NaN        NaN        NaN        NaN        NaN   
Coordinates                NaN        NaN        NaN        NaN        NaN   

                    VT.0110.26 Condition Case Flight Point Mass case DB Code  \
Reference_COS_ID           NaN       NaN  NaN          NaN       NaN     NaN   
Station_Description        NaN       NaN  NaN          NaN       NaN     NaN   
Reference_Axis_ID          NaN       NaN  NaN          NaN       NaN     NaN   
Station_ID                   0       NaN  NaN          NaN       NaN     NaN   
Cut                        NaN       NaN  NaN          NaN       NaN     NaN   
Coordinates                NaN       NaN  NaN          NaN       NaN     NaN   

                    Minmax/Nz Mass,Kg Mach # VTAS QDYN Unnamed: 499 DB Code.1  \
Reference_COS_ID          NaN     NaN    NaN  NaN  NaN          NaN       NaN   
Station_Description       NaN     NaN    NaN  NaN  NaN          NaN       NaN   
Reference_Axis_ID         NaN     NaN    NaN  NaN  NaN          NaN       NaN   
Station_ID                NaN     NaN    NaN  NaN  NaN          NaN       NaN   
Cut                       NaN     NaN    NaN  NaN  NaN          NaN       NaN   
Coordinates               NaN     NaN    NaN  NaN  NaN          NaN       NaN   

                    Mass,Kg.1 Mach #.1  
Reference_COS_ID          NaN      NaN  
Station_Description       NaN      NaN  
Reference_Axis_ID         NaN      NaN  
Station_ID                NaN      NaN  
Cut                       NaN      NaN  
Coordinates               NaN      NaN  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...