Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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 删除列名中不需要的字符串_Python_String_Pandas - Fatal编程技术网

Python 删除列名中不需要的字符串

Python 删除列名中不需要的字符串,python,string,pandas,Python,String,Pandas,我有一个数据帧,如下所示: df (0,'a1') (0,'a2') (0,'b1') (0,'b2') (0,'c1') date 2006-01-01 -0.00001 -0.00001 0.00001 0.00001 0.00001 2006-01-02 0.00001 0.00001 0.00001 -0

我有一个
数据帧
,如下所示:

 df

              (0,'a1')   (0,'a2') (0,'b1')  (0,'b2')  (0,'c1')     
 date                                                 
 2006-01-01   -0.00001   -0.00001  0.00001   0.00001  0.00001
 2006-01-02    0.00001    0.00001  0.00001  -0.00001  0.00001
 2006-01-03   -0.00001   -0.00001  0.00001   0.00001  0.00001
 2006-01-04    0.00001   -0.00001  0.00001   0.00001  0.00001
 2006-01-05    0.00001    0.00001  0.00001   0.00001  0.00001
我希望列名称仅为a1、a2、b1、b2、c1等,但不确定如何命名

删除列名中其他内容的最佳方法是什么


任何帮助都会很棒

如果列名中的元组通过
str
使用iterables进行索引:

df.columns = df.columns.str[1]
如果字符串:

df.columns = df.columns.str.split(',').str[1].str.rstrip(')')    
或:

感谢@Jon Clements提供另一个解决方案:

df.columns = df.columns.map(ast.literal_eval).get_level_values(1)

或者使用
重命名

df = df.rename(columns=lambda x: x.split(',')[1][1:-2])
如果它们是元组:

df = df.rename(columns=lambda x: x[1])
现在:

print(df)
将如预期的那样。

此外

df.columns = list(map(lambda x: x.split(',')[1].lstrip("'").rstrip("')"), [x for x in list(df)]))

或者就等着耶斯雷尔吧。哈哈!或者对于其他人来说;)
df.columns=df.columns.str.split(',').str[1]
这也可以,不?@DirtyBit-
df.columns=df.columns.str.split(',')).str[1].str.rstrip(')
working@jezrael如何
df.columns=df.columns.map(ast.literal\u eval).获取\u level\u值(1)
(如果是字符串)?
df.columns = list(map(lambda x: x.split(',')[1].lstrip("'").rstrip("')"), [x for x in list(df)]))