选择列表的各种“片断”

时间:2019-05-09 13:00:07

标签: python

我在Pandas DataFrame中有一个列列表,希望创建某些列列表,而无需手动输入。

我的问题是我正在学习并且知识不足。

我曾尝试在互联网上进行搜索,但我的情况完全没有。如果有重复,我深表歉意。

我要从中删除的列表如下:

['model', 'displ', 'cyl', 'trans', 'drive', 'fuel', 'veh_class', 'air_pollution_score', 'city_mpg', 'hwy_mpg', 'cmb_mpg', 'greenhouse_gas_score', 'smartway']

这是我自己编写的代码:dataframe.columns.tolist()[:6,8:10,11]

在这种情况下,我试图选择除“ air_pollution_score”和“ greenhouse_gas_score”之外的所有内容

我的最终目标是了解语法以及如何选择列表中的部分。

3 个答案:

答案 0 :(得分:5)

您可以这样做,也可以只使用drop删除您不需要想要的列:

dataframe.drop(['air_pollution_score', 'greenhouse_gas_score'], axis=1).columns

请注意,您需要指定axis=1,以便pandas知道要删除列而不是行。

即使您想使用list语法,我也会说最好使用list理解。像这样的东西:

exclude_columns = ['air_pollution_score', 'greenhouse_gas_score']

[col for col in dataframe.columns if col not in exclude_columns]

这将获取数据帧中的所有列,除非它们存在于exclude_columns中。

答案 1 :(得分:0)

使用熊猫的简单解决方案

import pandas as pd

data = pd.read_csv('path to your csv file')
df = data['column1','column2','column3',....]

注意:数据是您已经使用熊猫加载的来源,新选择的列将存储在新的数据框中 df

答案 2 :(得分:0)

假设df是您的数据框。您实际上可以使用过滤器和lambda,尽管很快就会变得太长。我将其作为@gmds答案的“单线”替代方案。

df[
  list(filter(
    lambda x: ('air_pollution_score' not in x) and ('greenhouse_gas_x' not in x), 
    df.columns.values
  ))
]

这是怎么回事:

  1. filter将函数应用于列表,仅包括定义的函数之后的元素/
  2. 我们使用lambda定义了该函数,以仅检查列表中是否包含'air_pollution_score''greenhouse_gas_x'
  3. 我们正在过滤df.columns.values列表;因此结果列表将仅保留我们未提及的元素。
  4. 我们正在使用df[['column1', 'column2']]语法,即“创建一个新数据框,但仅包含我定义的2列。”