我一直在使用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的新手。不太了解用于执行相同操作的不同函数或库。
答案 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]]