【问题标题】:How to delete many columns in python with one line of code? [duplicate]如何用一行代码删除python中的多列? [复制]
【发布时间】:2019-08-24 00:04:29
【问题描述】:

我正在尝试删除数据框中的以下列:1,2,101:117,121:124,126。

到目前为止,我发现删除列的两种方法是:

df.drop(df.columns[2:6],axis=1)
df.drop(df.columns[[0,3,5]],axis=1) 

如果我尝试

df.drop(df.columns[1,2,101:117,121:124],axis=1)

我收到“索引过多”错误

我也试过了

a=df.drop(df.columns[[1,2]],axis=1)
b=a.drop(a.columns[99:115],axis=1)
c=b.drop(b.columns[102:105],axis=1)
d=c.drop(c.columns[103],axis=1)

但这并没有因为某种原因删除我想要的列。

【问题讨论】:

  • 这可能会有所帮助 - stackoverflow.com/questions/28538536/…
  • 也许尝试以相反的顺序删除列?如果删除第 1 列和第 2 列,第 99 列将变为第 97 列。
  • stackoverflow.com/a/14519521/5350621 中解释了如何将单个索引和范围组合到一个列表中。在你的情况下 index = [1,2] + list(range(101, 117)) + ... 然后是 df.drop(df.columns[index],axis=1)。

标签: python python-3.x pandas


【解决方案1】:

请试试这个:

import numpy as np
import pandas as pd
input_df.drop(input_df.columns[[np.r_[0,2:4]]],axis=1, inplace = True)

【讨论】:

    【解决方案2】:

    使用np.r_ 进行切片:

    import numpy as np
    
    df.drop(columns=df.columns[np.r_[1, 2, 101:117, 121:124, 126]])
    

    import pandas pd
    df = pd.DataFrame(np.random.randint(1, 10, (2, 130)))
    df.drop(columns=df.columns[np.r_[1, 2, 101:117, 121:124, 126]])
    #     0    3    4    5    6 ... 120 124 125  127
    #0    6    1    3    7    2 ...   8   7   2    6
    #1    1    9    2    5    3 ...   7   3   9    4
    

    【讨论】:

      【解决方案3】:

      这应该可行:

      df.drop(df.columns[[indexes_of_columns_you_want_to_delete]],axis=1, 就地=真)

      【讨论】:

      • 这是你将如何格式化它:``` dfcomm.drop(dfcomm.columns[[1,2,101:117,121:124,126]], axis=1, inplace=True) ``` 因为我收到无效的语法错误
      • 这不适用于 OP 的索引。
      猜你喜欢
      • 2019-04-15
      • 2021-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-17
      • 1970-01-01
      相关资源
      最近更新 更多