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)]))