首页 > 解决方案 > 从熊猫数据框中剥离和删除列

问题描述

我在熊猫 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)

任何帮助表示赞赏!

标签: python-3.xpandasdataframe

解决方案


要删除尾随空格:

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

推荐阅读