python - 删除列名中不需要的字符串
问题描述
我有DataFrame
以下类似:
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
使用可迭代对象来使用索引:
df.columns = df.columns.str[1]
如果字符串:
df.columns = df.columns.str.split(',').str[1].str.rstrip(')')
df.columns = df.columns.str.extract(",'(.*)'\)", expand=False)
print (df)
a1 a2 b1 b2 c1
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
感谢@Jon Clements 提供另一个解决方案:
df.columns = df.columns.map(ast.literal_eval).get_level_values(1)
推荐阅读
- android - 存储 Appium 测试的最佳位置是什么?相同的 Android 存储库?分离的自动化存储库?
- java - 最后一次出现数字后的子字符串?(JAVA)
- c++ - 外部变量与静态变量的持续时间
- c# - 非原始/Blittable 异常 (.NET Core)
- javascript - 重新映射对象变量大小写的干净方法
- arrays - Rust 中 array::len 的运行时复杂度是多少?
- python - 连接字符串:两个字符串列表的“乘法”
- angular - Angular Material 自动完成显示 TypeError: Cannot read property 'createEmbeddedView' of undefined
- sql - 用于分布式应用程序的 SQL Server 服务代理,其会话处于会话状态
- r - 在 R 中使用时区格式转换日期