![](/img/trans.png)
[英]How to set a variable to read multiple columns from an excel file using pandas in python
[英]how to read certain columns from Excel using Pandas - Python
我正在閱讀 Excel 工作表,我想閱讀某些列:第 0 列,因為它是行索引,以及第 22:37 列。 現在這是我所做的:
import pandas as pd
import numpy as np
file_loc = "path.xlsx"
df = pd.read_excel(file_loc, index_col=None, na_values=['NA'], parse_cols = 37)
df= pd.concat([df[df.columns[0]], df[df.columns[22:]]], axis=1)
但我希望有更好的方法來做到這一點! 我知道如果我做parse_cols=[0, 22,..,37]
我能做到,但對於大型數據集,這沒有意義。
我也這樣做了:
s = pd.Series(0)
s[1]=22
for i in range(2,14):
s[i]=s[i-1]+1
df = pd.read_excel(file_loc, index_col=None, na_values=['NA'], parse_cols = s)
但它讀取前 15 列,即s
的長度。
您可以像這樣使用列索引(字母):
import pandas as pd
import numpy as np
file_loc = "path.xlsx"
df = pd.read_excel(file_loc, index_col=None, na_values=['NA'], usecols="A,C:AA")
print(df)
usecols : int, str, list-like, or callable default None
如果沒有,則解析所有列。
如果 str,則表示 Excel 列字母和列范圍的逗號分隔列表(例如“A:E”或“A,C,E:F”)。 范圍包括雙方。
如果是 int 列表,則表示要解析的列號列表。
如果是字符串列表,則表示要解析的列名列表。
0.24.0 版中的新功能。
如果可調用,則根據它評估每個列名並在可調用返回 True 時解析該列。
根據上述行為返回列的子集。
0.24.0 版中的新功能。
parse_cols
已棄用,請改用usecols
那是:
df = pd.read_excel(file_loc, index_col=None, na_values=['NA'], usecols = "A,C:AA")
“usecols”應該有所幫助,使用列范圍(根據excel工作表,A,B ...等)下面是示例
1. 選定的列
df = pd.read_excel(file_location,sheet_name='Sheet1', usecols="A,C,F")
2. 列范圍和選定列
df = pd.read_excel(file_location,sheet_name='Sheet1', usecols="A:F,H")
3. 多個范圍
df = pd.read_excel(file_location,sheet_name='Sheet1', usecols="A:F,H,J:N")
4. 列范圍
df = pd.read_excel(file_location,sheet_name='Sheet1', usecols="A:N")
如果您知道列的名稱並且不想使用 A、B、D 或 0、4、7。 這實際上有效
df = pd.read_excel(url)[['name of column','name of column','name of column','name of column','name of column']]
其中“列名稱”= 想要的列。 區分大小寫和空格
import pandas as pd
name_of_file = "test.xlsx"
data = pd.read_excel(name_of_file)
required_colum_name = "Post test Number"
print(data[required_colum_name])
不幸的是,這些方法似乎仍然在返回子選擇之前讀取和轉換標題。 我有一個 Excel 表,其中包含重復的 header 名稱,因為該表包含幾個相似的表。 我想單獨閱讀這些表格,所以我想應用usecols
。 但是,這仍然會為重復的列名添加后綴。
重現:
df.read_excel(filename, usecols='C:D')
df.columns
將返回['Header1.1', 'Header2.1']
除了拆分和加入生成的標頭之外,有沒有辦法避免這種情況? 特別是當不知道是否有重復的列時,重命名它們是很棘手的,因為在 '.' 上拆分。 可能正在破壞一個非重復的 header。
編輯:此外,基於列子集的 DataFrame 的長度(以索引表示)將由完整文件的長度決定。 因此,如果 A 列有 10 行,而 B 列只有 5 行,則usecols='B'
生成的 DataFrame 將有 10 行,其中 5 行用 NaN 填充。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.