将熊猫数据框的第一列,第二列和第n列读取到最后一列

时间:2019-09-28 07:03:02

标签: python python-3.x pandas dataframe

我有一个熊猫数据框df

df中有27列。

我想读df的第一,第二和第十列。我可以做到这一点df.iloc[0,1,9,10,11,.....,26],但是如果数据框有很多列,那么键入它就太麻烦了。有什么更优雅的方式读取列?

我正在使用python v3.7

4 个答案:

答案 0 :(得分:4)

如果您想按数字索引选择列,iloc是正确的选择。您可以使用np.arange添加一系列列(例如,在第10列到最后一个列之间)。

import pandas as pd  
import numpy as np

cols = [0, 1]
cols.extend(np.arange(10, df.shape[1]))
df.iloc[:,cols]

或者,您可以使用numpy的r_切片技巧:

df.iloc[:,np.r_[0:2, 10:df.shape[1]]]

答案 1 :(得分:1)

如果您知道列名,则可以尝试:

df = df[['col1', 'col2', 'coln']]

如果您不知道确切的列名,则可以尝试以下方法:

list_of_columns_index = [1,2,3, n]
df = df[[df.columns[i] for i in list_of_columns_index]]

答案 2 :(得分:1)

您可以使用“列表”和“范围”:

df.iloc[:,[0,1]+list(range(9,27))]

或者麻木的方式:

df.iloc[:,np.append([0,1],np.arange(9,27))]

答案 3 :(得分:1)

假设您在上下文中知道起始列的名称或第10列的名称。假设名称为starting_column_name

使用列名将使代码更具可读性,并且省去了计算列数以达到正确列数的麻烦。

num_columns = df.shape[1]  # number of columns in dataframe
starting_column = df.columns.get_loc(starting_column_name)
features = df.iloc[:, np.r_[0:2, starting_column:num_columns]]