【问题标题】:Pandas Remove Duplicated ColumnsPandas 删除重复的列
【发布时间】:2021-07-04 21:23:49
【问题描述】:

我正在使用一个 Excel 电子表格来比较不同货币的两个项目的价值。电子表格标题如下:

美元 美元差异 | GBP 英镑差价 |日元日元差价.......

当我将它导入 pandas 并创建一个数据框时,它会创建名为 Difference.1、Difference.2、Difference.3....、Difference.n 的标题

我想删除所有名为 DIFFERENCE

的标题

注意所有不同的标题都是唯一命名的

【问题讨论】:

  • 我们需要更多信息才能继续。你试过什么代码?你在使用header 选项吗?
  • 传递 sep='\t' 可能会成功:pd.read_csv(file, sep='\t')

标签: python excel pandas filter


【解决方案1】:

我认为您可以参考此链接以获取 pandas df.drop functions 下面是我们要做的。

  1. 搜索所有具有DIFFERENCE的列名
  2. 生成一个包含所有这些名称的列表
  3. 删除包含这些名称的列

// 获取一个新的 df,其中只包含带有 DIFFERENCE 的名称

df2 = df.filter(like='DIFFERENCE ', axis=1)

//为所有这些列名生成一个列表

x = []
for col in df2.columns:
    x.append(col)

// 在 x 中删除具有这些名称的列

df.drop(columns=x)

// 或者您可以为这些更新的信息保留一个新的df

df3 = df.drop(columns=x)

【讨论】:

    【解决方案2】:

    我相信您所需要的只是删除名称中包含“DIFFERENCE”的列。在这种情况下,您可以简单地这样做:

        df = pd.read_csv("../path/to/your/file.csv")
        df = df[df.columns.drop(list(df.filter(regex='DIFFERENCE')))]
    

    示例

    如果你有这样的事情:

    df = pd.DataFrame({"a1": [1,2,3], "a2":[1,1,1], "b":[2,4,6]})
    print(df)
    
    Out:
       a1  a2  b
    0   1   1  2
    1   2   1  4
    2   3   1  6
    

    下一步是

    df = df[df.columns.drop(list(df.filter(regex='a')))]
    print(df)
    
    Out:
       b
    0  2
    1  4
    2  6
    

    你可以阅读更多关于pandas.DataFrame.drop

    【讨论】:

      猜你喜欢
      • 2013-02-05
      • 1970-01-01
      • 2018-05-13
      • 2018-04-10
      • 2022-12-23
      • 2015-07-16
      • 1970-01-01
      • 2020-06-12
      相关资源
      最近更新 更多