Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 用于从列名中删除字符串模式的For循环_Python 3.x_Pandas - Fatal编程技术网

Python 3.x 用于从列名中删除字符串模式的For循环

Python 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={

如果(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={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})