我在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”之外的所有内容
我的最终目标是了解语法以及如何选择列表中的部分。
答案 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
))
]
这是怎么回事:
filter
将函数应用于列表,仅包括定义的函数之后的元素/ lambda
定义了该函数,以仅检查列表中是否包含'air_pollution_score'
或'greenhouse_gas_x'
。df.columns.values
列表;因此结果列表将仅保留我们未提及的元素。df[['column1', 'column2']]
语法,即“创建一个新数据框,但仅包含我定义的2列。”