我有一个熊猫数据框df
。
df
中有27列。
我想读df
的第一,第二和第十列。我可以做到这一点df.iloc[0,1,9,10,11,.....,26]
,但是如果数据框有很多列,那么键入它就太麻烦了。有什么更优雅的方式读取列?
我正在使用python v3.7
答案 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]]