Pandas数据框:为与正则表达式匹配的列/行分配特定值

时间:2019-04-21 20:18:00

标签: python regex pandas

我是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 个答案:

答案 0 :(得分:1)

使用正则表达式匹配“ VT”之间的数字。和“ .26:

awk -F"$" '{print $3}' file.txt

答案 1 :(得分:0)

您可以将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