如何从df中选择列a和b,并将它们保存到新的数据帧df1中?

index  a   b   c
1      2   3   4
2      3   4   5

尝试失败:

df1 = df['a':'b']
df1 = df.ix[:, 'a':'b']

当前回答

def get_slize(dataframe, start_row, end_row, start_col, end_col):
    assert len(dataframe) > end_row and start_row >= 0
    assert len(dataframe.columns) > end_col and start_col >= 0
    list_of_indexes = list(dataframe.columns)[start_col:end_col]
    ans = dataframe.iloc[start_row:end_row][list_of_indexes]
    return ans

只需使用此功能

其他回答

您可以提供要删除的列的列表,并使用Pandas DataFrame上的drop()函数仅返回所需的列。

只是说说而已

colsToDrop = ['a']
df.drop(colsToDrop, axis=1)

将返回仅包含列b和c的DataFrame。

此处记录了drop方法。

假设你的列名(df.columns)是['index','a','b','c'],那么你想要的数据就在第三列和第四列。如果脚本运行时不知道它们的名称,可以执行以下操作

newdf = df[df.columns[2:4]] # Remember, Python is zero-offset! The "third" entry is at slot two.

正如EMS在回答中所指出的,df.ix对列进行了更简洁的切片,但.columns切片接口可能更自然,因为它使用了普通的一维Python列表索引/切片语法。

警告:“index”是DataFrame列的错误名称。同一标签也用于实际df.index属性,即index数组。因此,您的列由df['index']返回,而真正的DataFrame索引由df.index返回。index是一种特殊的系列,优化用于查找其元素值。对于df.index,它用于按标签查找行。df.columns属性也是一个pd.Index数组,用于按标签查找列。

对于Pandas,

具有列名称

dataframe[['column1','column2']]

要通过iloc和带有索引编号的特定列进行选择,请执行以下操作:

dataframe.iloc[:,[1,2]]

带有loc的列名可以使用如下

dataframe.loc[:,['column1','column2']]
def get_slize(dataframe, start_row, end_row, start_col, end_col):
    assert len(dataframe) > end_row and start_row >= 0
    assert len(dataframe.columns) > end_col and start_col >= 0
    list_of_indexes = list(dataframe.columns)[start_col:end_col]
    ans = dataframe.iloc[start_row:end_row][list_of_indexes]
    return ans

只需使用此功能

我已经看到了几个答案,但其中一个仍然不清楚。你会如何选择那些感兴趣的专栏?

答案是,如果您将它们收集在列表中,则可以使用列表引用列。

实例

print(extracted_features.shape)
print(extracted_features)

(63,)
['f000004' 'f000005' 'f000006' 'f000014' 'f000039' 'f000040' 'f000043'
 'f000047' 'f000048' 'f000049' 'f000050' 'f000051' 'f000052' 'f000053'
 'f000054' 'f000055' 'f000056' 'f000057' 'f000058' 'f000059' 'f000060'
 'f000061' 'f000062' 'f000063' 'f000064' 'f000065' 'f000066' 'f000067'
 'f000068' 'f000069' 'f000070' 'f000071' 'f000072' 'f000073' 'f000074'
 'f000075' 'f000076' 'f000077' 'f000078' 'f000079' 'f000080' 'f000081'
 'f000082' 'f000083' 'f000084' 'f000085' 'f000086' 'f000087' 'f000088'
 'f000089' 'f000090' 'f000091' 'f000092' 'f000093' 'f000094' 'f000095'
 'f000096' 'f000097' 'f000098' 'f000099' 'f000100' 'f000101' 'f000103']

我有以下列表/NumPy数组extracted_features,指定了63列。原始数据集有103列,我想提取这些列,然后使用

dataset[extracted_features]

你最终会得到这个

这是你在机器学习中经常用到的东西(更具体地说,在特征选择中)。我也想讨论其他方式,但我认为其他Stack Overflower用户已经涵盖了这一点。