python-3.x - 从熊猫数据框中剥离和删除列
问题描述
我在熊猫 df 中有以下列:
Index(['Commodity Derivative Name\n(including associated contracts)',
'Venue MIC ', 'Name of Trading Venue ', 'Venue Product Codes ',
'Principal Venue Product Code', 'Spot month single limit#',
'Other month limit#', 'Conversion Factor', 'Unit of measurement',
'Definition of spot month', 'Unnamed: 10', 'Unnamed: 11', 'Unnamed: 12',
'Unnamed: 13', 'Unnamed: 14', 'Unnamed: 15'],
dtype='object')
我已经为此查看了一些解决方案,但我不确定是不是因为我累了,但我根本无法让它工作。
我想我可以在列中进行硬编码,但文件将来可能会更改,并且认为这样做会更好。我认为也许在它剥离了 temp 列中的列之后,它可能正在寻找不再存在的未剥离列,所以它会出错 - 不完全确定。
我有以下代码来清理 df 的列:
f = pd.read_excel(r"fca_position_limits.xlsx")
# unwanted spaces need to be removed from headers
f.columns = f.columns.strip() # --> this did not work
temp_f = f.copy()
for column in f.columns:
temp_f = temp_f[column].str.strip()
if column[0:7] == "Unnamed":
temp_f.drop(column, inplace=True)
任何帮助表示赞赏!
解决方案
要删除尾随空格:
df.columns = [c.strip() for c in df.columns]
并删除“未命名”列:
df.drop(columns=df.filter(like='Unnamed').columns)
这是该drop
部分的示例:
输入:
>>> df = pd.DataFrame([], columns=['A', 'B', 'Unnamed 1', 'Unnamed 2', 'C'])
>>> df.columns
['A', 'B', 'Unnamed 1', 'Unnamed 2', 'C']
输出:
>>> df2 = df.drop(columns=df.filter(like='Unnamed').columns)
>>> df2.columns
['A', 'B', 'C']
推荐阅读
- ios - 使用 laravel 将 Apple Watch 数据捕获到服务器
- typo3 - 如何在 TYPO3 后端隐藏数据库字段
- azure - Azure AKS - 如何为在来自不同可用区的节点上运行的 Pod 在公共磁盘上挂载卷?
- node.js - 在存储库模式中,存储库中的一种方法具有多种用途,如何实现该方法以获得更好的设计?
- windows - 即使重置防火墙规则后端口仍保持打开状态
- rest - 返回 403 的 Microsoft 开发中心 API
- r - 根据条件从数据框中选择行,然后在新列中为它们分配优先级编号
- php - 在codeigniter中发送短信
- java - Apache NetBeans 12.4 安装在安装过程中在 WIN10 上挂起
- java - 如何从 Android 调用 Java/Kotlin GCP 云函数