Python 3.x 用于从列名中删除字符串模式的For循环
如果(1)列名包含“eTIV”或“eTIV1”,我试图从“df_merged”数据框中的列名中删除“_Adj” 此代码似乎产生以下错误: KeyError:“[]未在轴中找到”以下是两个选项: 选项1Python 3.x 用于从列名中删除字符串模式的For循环,python-3.x,pandas,Python 3.x,Pandas,如果(1)列名包含“eTIV”或“eTIV1”,我试图从“df_merged”数据框中的列名中删除“_Adj” 此代码似乎产生以下错误: KeyError:“[]未在轴中找到”以下是两个选项: 选项1 df_merged.columns = [col.replace('_Adj','') if 'eTIV' in col else col for col in list(df_merged.columns)] 选项2 df_merged = df_merged.rename(columns={
df_merged.columns = [col.replace('_Adj','') if 'eTIV' in col else col for col in list(df_merged.columns)]
选项2
df_merged = df_merged.rename(columns={col: col.replace('_Adj','') if 'eTIV' in col else col for col in df_merged.columns})
这很好。谢谢。我修改后添加了一个“or语句(我认为这应该是正确的格式):df_merged.columns=[col.replace(''u Adj',''),如果col中的'eTIV'或col else中的'EstimatedTotalIntraCranialVol'表示列表中的col(df_merged.columns)],当然可以,我排除了
eTIV1
条件检查,因为它将被eTIV
条件捕获。从您的角度来看,选项1或2是否更优雅?在我看来,选项1最具可读性,而选项2可能最具python风格。在选项1中,它避免了将列重新命名为列表,以便进行列表理解。
df_merged = df_merged.rename(columns={col: col.replace('_Adj','') if 'eTIV' in col else col for col in df_merged.columns})