R到python的长度等价是多少

时间:2017-10-06 11:30:50

标签: python pandas numpy

我一直在使用R来编程并且在Python编程中很天真。我在R中有一个工作代码,我正在读取文件夹中的多个文件,并将文件子列设置为几列。所有文件中的列都不相同。 所以,在R中,我写了一个代码:

selectedcolumns <- df[,c(1,3:5,7:length(df))]

此代码将选择列1,3,4,5,7然后将选择所有列,直到最后一列,然后是文件中的第7列。

在Python中,当我尝试使用类似的代码时,我无法理解“length”可能的等效关键字,这将帮助我动态选择最后一个来自所需列的文件。

到目前为止我一直在尝试的是:

import pandas as pd
selectedcolumns = pd.read_excel('ABC.xlsx',sheetname= "myfile", header = None, usecols = [1,3,4,5,7])

现在这段代码正在读取文件并选择所提到的列。 1,3,4,5,7。但是,我在这里寻找两件事:

1)有没有更好的方法在Python中编写 3:5 ,因为它可能在R?

2)我可以从第7列到最后一列写什么,因为最后一列在所有文件中都是动态的,我需要每个文件中第7列的所有列。

任何帮助都是有用的,因为我是Python的新手。不太了解用于执行相同操作的不同函数或库。

2 个答案:

答案 0 :(得分:2)

在R之后看起来有点复杂,但是如果你想在选择之后复制所有列,你应该使用这样的代码:

df1 = df.iloc[:,7:]

它会将所有列从7复制到最后一列。

您可以通过这种方式选择多个范围:

df1 = df[df.columns[0:1].tolist() + df.columns[7:].tolist()]

答案 1 :(得分:2)

对于连接切片,您可以使用numpy的r_对象。例如,np.r_[1:3, 6, 8:10]会返回array([1, 2, 6, 8, 9])。至于长度函数,等价于len。但是,您需要在df.columns集合上调用它(len(df)返回行数)。

np.r_[1:3, 6, 8:len(df.columns)+1]返回1,2,6,8,9,...,n,其中n是列数。

获得切片后,您可以在iloc索引器中使用它:

df.iloc[:, np.r_[1:3, 6, 8:len(df.columns)+1]]