How to read Excel data by column name in python using xlrd
I am trying to read the data of large excel file(almost 100000 row).
I am using 'xlrd Module' in python to fetch the data from excel.
I want to fetch data by column name(Cascade,Schedule Name,Market) instead of column number(0,1,2).
Because my excel columns are not fixed.
i know how to fetch data in case of fixed column.
here is the code by which i am fetching data from the excel for fixed column
import xlrd
file_location =r"C:UsersDesktopVision.xlsx"
workbook=xlrd.open_workbook(file_location)
sheet= workbook.sheet_by_index(0)
print(sheet.ncols,sheet.nrows,sheet.name,sheet.number)
for i in range(sheet.nrows):
flag = 0
for j in range(sheet.ncols):
value=sheet.cell(i,j).value
If anyone has any solution of this, kindly let me know
Thanks
python excel python-3.x xlrd
add a comment |
I am trying to read the data of large excel file(almost 100000 row).
I am using 'xlrd Module' in python to fetch the data from excel.
I want to fetch data by column name(Cascade,Schedule Name,Market) instead of column number(0,1,2).
Because my excel columns are not fixed.
i know how to fetch data in case of fixed column.
here is the code by which i am fetching data from the excel for fixed column
import xlrd
file_location =r"C:UsersDesktopVision.xlsx"
workbook=xlrd.open_workbook(file_location)
sheet= workbook.sheet_by_index(0)
print(sheet.ncols,sheet.nrows,sheet.name,sheet.number)
for i in range(sheet.nrows):
flag = 0
for j in range(sheet.ncols):
value=sheet.cell(i,j).value
If anyone has any solution of this, kindly let me know
Thanks
python excel python-3.x xlrd
Edit your Question and give an examples of "by column name instead of column number"
– stovfl
Nov 14 '18 at 21:07
i have made changes in my question.
– George.S
Nov 14 '18 at 21:21
can you show me how ?
– George.S
Nov 14 '18 at 21:31
add a comment |
I am trying to read the data of large excel file(almost 100000 row).
I am using 'xlrd Module' in python to fetch the data from excel.
I want to fetch data by column name(Cascade,Schedule Name,Market) instead of column number(0,1,2).
Because my excel columns are not fixed.
i know how to fetch data in case of fixed column.
here is the code by which i am fetching data from the excel for fixed column
import xlrd
file_location =r"C:UsersDesktopVision.xlsx"
workbook=xlrd.open_workbook(file_location)
sheet= workbook.sheet_by_index(0)
print(sheet.ncols,sheet.nrows,sheet.name,sheet.number)
for i in range(sheet.nrows):
flag = 0
for j in range(sheet.ncols):
value=sheet.cell(i,j).value
If anyone has any solution of this, kindly let me know
Thanks
python excel python-3.x xlrd
I am trying to read the data of large excel file(almost 100000 row).
I am using 'xlrd Module' in python to fetch the data from excel.
I want to fetch data by column name(Cascade,Schedule Name,Market) instead of column number(0,1,2).
Because my excel columns are not fixed.
i know how to fetch data in case of fixed column.
here is the code by which i am fetching data from the excel for fixed column
import xlrd
file_location =r"C:UsersDesktopVision.xlsx"
workbook=xlrd.open_workbook(file_location)
sheet= workbook.sheet_by_index(0)
print(sheet.ncols,sheet.nrows,sheet.name,sheet.number)
for i in range(sheet.nrows):
flag = 0
for j in range(sheet.ncols):
value=sheet.cell(i,j).value
If anyone has any solution of this, kindly let me know
Thanks
python excel python-3.x xlrd
python excel python-3.x xlrd
edited Nov 15 '18 at 7:50
George.S
asked Nov 14 '18 at 20:54
George.SGeorge.S
306
306
Edit your Question and give an examples of "by column name instead of column number"
– stovfl
Nov 14 '18 at 21:07
i have made changes in my question.
– George.S
Nov 14 '18 at 21:21
can you show me how ?
– George.S
Nov 14 '18 at 21:31
add a comment |
Edit your Question and give an examples of "by column name instead of column number"
– stovfl
Nov 14 '18 at 21:07
i have made changes in my question.
– George.S
Nov 14 '18 at 21:21
can you show me how ?
– George.S
Nov 14 '18 at 21:31
Edit your Question and give an examples of "by column name instead of column number"
– stovfl
Nov 14 '18 at 21:07
Edit your Question and give an examples of "by column name instead of column number"
– stovfl
Nov 14 '18 at 21:07
i have made changes in my question.
– George.S
Nov 14 '18 at 21:21
i have made changes in my question.
– George.S
Nov 14 '18 at 21:21
can you show me how ?
– George.S
Nov 14 '18 at 21:31
can you show me how ?
– George.S
Nov 14 '18 at 21:31
add a comment |
3 Answers
3
active
oldest
votes
Comment: still not working when header of
fieldnames = ['Cascade', 'Market', 'Schedule', 'Name]
andSheet(['Cascade', 'Schedule', 'Name', 'Market'])
are equal.
Keep order of fieldnames
in col_idx
, was not my initial goal.
Question: I want to fetch data by column name
The following OOP
solution will work:
class OrderedByName():
"""
Privides a generator method, to iterate in Column Name ordered sequence
Provides subscription, to get columns index by name. using class[name]
"""
def __init__(self, sheet, fieldnames, row=0):
"""
Create a OrderedDict name:index from 'fieldnames'
:param sheet: The Worksheet to use
:param fieldnames: Ordered List of Column Names
:param row: Default Row Index for the Header Row
"""
from collections import OrderedDict
self.columns = OrderedDict().fromkeys(fieldnames, None)
for n in range(sheet.ncols):
self.columns[sheet.cell(row, n).value] = n
@property
def ncols(self):
"""
Generator, equal usage as range(xlrd.ncols),
to iterate columns in ordered sequence
:return: yield Column index
"""
for idx in self.columns.values():
yield idx
def __getitem__(self, item):
"""
Make class object subscriptable
:param item: Column Name
:return: Columns index
"""
return self.columns[item]
Usage:
# Worksheet Data
sheet([['Schedule', 'Cascade', 'Market'],
['SF05UB0', 'DO Macro Upgrade', 'Upper Cnetral Valley'],
['DE03HO0', 'DO Macro Upgrade', 'Toledo'],
['SF73XC4', 'DO Macro Upgrade', 'SF Bay']]
)
# Instantiate with Ordered List of Column Names
# NOTE the different Order of Column Names
by_name = OrderedByName(sheet, ['Cascade', 'Market', 'Schedule'])
# Iterate all Rows and all Columns Ordered as instantiated
for row in range(sheet.nrows):
for col in by_name.ncols:
value = sheet.cell(row, col).value
print("cell().value == ".format((row,col), value))
Output:
cell((0, 1)).value == Cascade
cell((0, 2)).value == Market
cell((0, 0)).value == Schedule
cell((1, 1)).value == DO Macro Upgrade
cell((1, 2)).value == Upper Cnetral Valley
cell((1, 0)).value == SF05UB0
cell((2, 1)).value == DO Macro Upgrade
cell((2, 2)).value == Toledo
cell((2, 0)).value == DE03HO0
cell((3, 1)).value == DO Macro Upgrade
cell((3, 2)).value == SF Bay
cell((3, 0)).value == SF73XC4
Get Index of one Column by Name
print("cell.value == ".format((1, by_name['Schedule']),
sheet.cell(1, by_name['Schedule']).value))
#>>> cell(1, 0).value == SF05UB0
Tested with Python: 3.5
thanks stovfl for your answer but you are only printing the column index in but i want to print all the data of corresponding of column name. can you show me how i should use these column index for fetch correspondin row data of it
– George.S
Nov 15 '18 at 21:23
@George.S: From your Question: " i know how to fetch data in case of fixed column.". Edit you Question and show a not fixed data table and how you do this using thecol_idx
list.
– stovfl
Nov 15 '18 at 21:43
Actually " i know how to fetch data in case of fixed column." but problem is that in your code if i changed column header of my excel. it is print the column index in same order. so tell me how would my code knows that which header is residing in which column. i think i have cleared my point.
– George.S
Nov 16 '18 at 8:01
Thanks for update but it is still not working when header of fieldnames['Cascade', 'Market', 'Schedule', 'Name] and Sheet(['Cascade', 'Schedule', 'Name', 'Market']) are equal. it is not showing the exact position of column header.
– George.S
Nov 16 '18 at 15:27
add a comment |
Alternatively you could also make use of pandas
, which is a comprehensive data analysis library with built-in excel I/O capabilities.
import pandas as pd
file_location =r"C:UsersesatnirDesktopSprint Vision.xlsx"
# Read out first sheet of excel file and return as pandas dataframe
df = pd.read_excel(file_location)
# Reduce dataframe to target columns (by filtering on column names)
df = df[['Cascade', 'Schedule Name', 'Market']]
where a quick view of the resulting dataframe df
will show:
In [1]: df
Out[1]:
Cascade Schedule Name Market
0 SF05UB0 DO Macro Upgrade Upper Central Valley
1 DE03HO0 DO Macro Upgrade Toledo
2 SF73XC4 DO Macro Upgrade SF Bay
Thank Xukrao for your answer but i do not know how to perform operation over excel data using pandas. so i am unable to use it.
– George.S
Nov 16 '18 at 15:30
add a comment |
Your column names are in the first row of the spreadsheet, right? So read the first row and construct a mapping from names to column indices.
column_pos = [ (sheet.cell(0, i).value, i) for i in range(sheet.ncols) ]
colidx = dict(column_pos)
Or as a one-liner:
colidx = dict( (sheet.cell(0, i).value, i) for i in range(sheet.ncols) )
You can then use the index to interpret column names, for example:
print(sheet.cell(5, colidx["Schedule Name"]).value)
To get an entire column, you can use a list comprehension:
schedule = [ sheet.cell(i, colidx["Schedule Name"]).value for i in range(1, sheet.nrows) ]
If you really wanted to, you could create a wrapper for the cell
function that handles the interpretation. But I think this is simple enough.
thanks Alexis for your answer. i want to fetch complete data of 'schedule name' instead of individual value. can you show me how ?
– George.S
Nov 15 '18 at 21:04
Done. (I assume row 0 contains the column names, so it's not included in the column values.)
– alexis
Nov 15 '18 at 21:51
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53308559%2fhow-to-read-excel-data-by-column-name-in-python-using-xlrd%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
3 Answers
3
active
oldest
votes
3 Answers
3
active
oldest
votes
active
oldest
votes
active
oldest
votes
Comment: still not working when header of
fieldnames = ['Cascade', 'Market', 'Schedule', 'Name]
andSheet(['Cascade', 'Schedule', 'Name', 'Market'])
are equal.
Keep order of fieldnames
in col_idx
, was not my initial goal.
Question: I want to fetch data by column name
The following OOP
solution will work:
class OrderedByName():
"""
Privides a generator method, to iterate in Column Name ordered sequence
Provides subscription, to get columns index by name. using class[name]
"""
def __init__(self, sheet, fieldnames, row=0):
"""
Create a OrderedDict name:index from 'fieldnames'
:param sheet: The Worksheet to use
:param fieldnames: Ordered List of Column Names
:param row: Default Row Index for the Header Row
"""
from collections import OrderedDict
self.columns = OrderedDict().fromkeys(fieldnames, None)
for n in range(sheet.ncols):
self.columns[sheet.cell(row, n).value] = n
@property
def ncols(self):
"""
Generator, equal usage as range(xlrd.ncols),
to iterate columns in ordered sequence
:return: yield Column index
"""
for idx in self.columns.values():
yield idx
def __getitem__(self, item):
"""
Make class object subscriptable
:param item: Column Name
:return: Columns index
"""
return self.columns[item]
Usage:
# Worksheet Data
sheet([['Schedule', 'Cascade', 'Market'],
['SF05UB0', 'DO Macro Upgrade', 'Upper Cnetral Valley'],
['DE03HO0', 'DO Macro Upgrade', 'Toledo'],
['SF73XC4', 'DO Macro Upgrade', 'SF Bay']]
)
# Instantiate with Ordered List of Column Names
# NOTE the different Order of Column Names
by_name = OrderedByName(sheet, ['Cascade', 'Market', 'Schedule'])
# Iterate all Rows and all Columns Ordered as instantiated
for row in range(sheet.nrows):
for col in by_name.ncols:
value = sheet.cell(row, col).value
print("cell().value == ".format((row,col), value))
Output:
cell((0, 1)).value == Cascade
cell((0, 2)).value == Market
cell((0, 0)).value == Schedule
cell((1, 1)).value == DO Macro Upgrade
cell((1, 2)).value == Upper Cnetral Valley
cell((1, 0)).value == SF05UB0
cell((2, 1)).value == DO Macro Upgrade
cell((2, 2)).value == Toledo
cell((2, 0)).value == DE03HO0
cell((3, 1)).value == DO Macro Upgrade
cell((3, 2)).value == SF Bay
cell((3, 0)).value == SF73XC4
Get Index of one Column by Name
print("cell.value == ".format((1, by_name['Schedule']),
sheet.cell(1, by_name['Schedule']).value))
#>>> cell(1, 0).value == SF05UB0
Tested with Python: 3.5
thanks stovfl for your answer but you are only printing the column index in but i want to print all the data of corresponding of column name. can you show me how i should use these column index for fetch correspondin row data of it
– George.S
Nov 15 '18 at 21:23
@George.S: From your Question: " i know how to fetch data in case of fixed column.". Edit you Question and show a not fixed data table and how you do this using thecol_idx
list.
– stovfl
Nov 15 '18 at 21:43
Actually " i know how to fetch data in case of fixed column." but problem is that in your code if i changed column header of my excel. it is print the column index in same order. so tell me how would my code knows that which header is residing in which column. i think i have cleared my point.
– George.S
Nov 16 '18 at 8:01
Thanks for update but it is still not working when header of fieldnames['Cascade', 'Market', 'Schedule', 'Name] and Sheet(['Cascade', 'Schedule', 'Name', 'Market']) are equal. it is not showing the exact position of column header.
– George.S
Nov 16 '18 at 15:27
add a comment |
Comment: still not working when header of
fieldnames = ['Cascade', 'Market', 'Schedule', 'Name]
andSheet(['Cascade', 'Schedule', 'Name', 'Market'])
are equal.
Keep order of fieldnames
in col_idx
, was not my initial goal.
Question: I want to fetch data by column name
The following OOP
solution will work:
class OrderedByName():
"""
Privides a generator method, to iterate in Column Name ordered sequence
Provides subscription, to get columns index by name. using class[name]
"""
def __init__(self, sheet, fieldnames, row=0):
"""
Create a OrderedDict name:index from 'fieldnames'
:param sheet: The Worksheet to use
:param fieldnames: Ordered List of Column Names
:param row: Default Row Index for the Header Row
"""
from collections import OrderedDict
self.columns = OrderedDict().fromkeys(fieldnames, None)
for n in range(sheet.ncols):
self.columns[sheet.cell(row, n).value] = n
@property
def ncols(self):
"""
Generator, equal usage as range(xlrd.ncols),
to iterate columns in ordered sequence
:return: yield Column index
"""
for idx in self.columns.values():
yield idx
def __getitem__(self, item):
"""
Make class object subscriptable
:param item: Column Name
:return: Columns index
"""
return self.columns[item]
Usage:
# Worksheet Data
sheet([['Schedule', 'Cascade', 'Market'],
['SF05UB0', 'DO Macro Upgrade', 'Upper Cnetral Valley'],
['DE03HO0', 'DO Macro Upgrade', 'Toledo'],
['SF73XC4', 'DO Macro Upgrade', 'SF Bay']]
)
# Instantiate with Ordered List of Column Names
# NOTE the different Order of Column Names
by_name = OrderedByName(sheet, ['Cascade', 'Market', 'Schedule'])
# Iterate all Rows and all Columns Ordered as instantiated
for row in range(sheet.nrows):
for col in by_name.ncols:
value = sheet.cell(row, col).value
print("cell().value == ".format((row,col), value))
Output:
cell((0, 1)).value == Cascade
cell((0, 2)).value == Market
cell((0, 0)).value == Schedule
cell((1, 1)).value == DO Macro Upgrade
cell((1, 2)).value == Upper Cnetral Valley
cell((1, 0)).value == SF05UB0
cell((2, 1)).value == DO Macro Upgrade
cell((2, 2)).value == Toledo
cell((2, 0)).value == DE03HO0
cell((3, 1)).value == DO Macro Upgrade
cell((3, 2)).value == SF Bay
cell((3, 0)).value == SF73XC4
Get Index of one Column by Name
print("cell.value == ".format((1, by_name['Schedule']),
sheet.cell(1, by_name['Schedule']).value))
#>>> cell(1, 0).value == SF05UB0
Tested with Python: 3.5
thanks stovfl for your answer but you are only printing the column index in but i want to print all the data of corresponding of column name. can you show me how i should use these column index for fetch correspondin row data of it
– George.S
Nov 15 '18 at 21:23
@George.S: From your Question: " i know how to fetch data in case of fixed column.". Edit you Question and show a not fixed data table and how you do this using thecol_idx
list.
– stovfl
Nov 15 '18 at 21:43
Actually " i know how to fetch data in case of fixed column." but problem is that in your code if i changed column header of my excel. it is print the column index in same order. so tell me how would my code knows that which header is residing in which column. i think i have cleared my point.
– George.S
Nov 16 '18 at 8:01
Thanks for update but it is still not working when header of fieldnames['Cascade', 'Market', 'Schedule', 'Name] and Sheet(['Cascade', 'Schedule', 'Name', 'Market']) are equal. it is not showing the exact position of column header.
– George.S
Nov 16 '18 at 15:27
add a comment |
Comment: still not working when header of
fieldnames = ['Cascade', 'Market', 'Schedule', 'Name]
andSheet(['Cascade', 'Schedule', 'Name', 'Market'])
are equal.
Keep order of fieldnames
in col_idx
, was not my initial goal.
Question: I want to fetch data by column name
The following OOP
solution will work:
class OrderedByName():
"""
Privides a generator method, to iterate in Column Name ordered sequence
Provides subscription, to get columns index by name. using class[name]
"""
def __init__(self, sheet, fieldnames, row=0):
"""
Create a OrderedDict name:index from 'fieldnames'
:param sheet: The Worksheet to use
:param fieldnames: Ordered List of Column Names
:param row: Default Row Index for the Header Row
"""
from collections import OrderedDict
self.columns = OrderedDict().fromkeys(fieldnames, None)
for n in range(sheet.ncols):
self.columns[sheet.cell(row, n).value] = n
@property
def ncols(self):
"""
Generator, equal usage as range(xlrd.ncols),
to iterate columns in ordered sequence
:return: yield Column index
"""
for idx in self.columns.values():
yield idx
def __getitem__(self, item):
"""
Make class object subscriptable
:param item: Column Name
:return: Columns index
"""
return self.columns[item]
Usage:
# Worksheet Data
sheet([['Schedule', 'Cascade', 'Market'],
['SF05UB0', 'DO Macro Upgrade', 'Upper Cnetral Valley'],
['DE03HO0', 'DO Macro Upgrade', 'Toledo'],
['SF73XC4', 'DO Macro Upgrade', 'SF Bay']]
)
# Instantiate with Ordered List of Column Names
# NOTE the different Order of Column Names
by_name = OrderedByName(sheet, ['Cascade', 'Market', 'Schedule'])
# Iterate all Rows and all Columns Ordered as instantiated
for row in range(sheet.nrows):
for col in by_name.ncols:
value = sheet.cell(row, col).value
print("cell().value == ".format((row,col), value))
Output:
cell((0, 1)).value == Cascade
cell((0, 2)).value == Market
cell((0, 0)).value == Schedule
cell((1, 1)).value == DO Macro Upgrade
cell((1, 2)).value == Upper Cnetral Valley
cell((1, 0)).value == SF05UB0
cell((2, 1)).value == DO Macro Upgrade
cell((2, 2)).value == Toledo
cell((2, 0)).value == DE03HO0
cell((3, 1)).value == DO Macro Upgrade
cell((3, 2)).value == SF Bay
cell((3, 0)).value == SF73XC4
Get Index of one Column by Name
print("cell.value == ".format((1, by_name['Schedule']),
sheet.cell(1, by_name['Schedule']).value))
#>>> cell(1, 0).value == SF05UB0
Tested with Python: 3.5
Comment: still not working when header of
fieldnames = ['Cascade', 'Market', 'Schedule', 'Name]
andSheet(['Cascade', 'Schedule', 'Name', 'Market'])
are equal.
Keep order of fieldnames
in col_idx
, was not my initial goal.
Question: I want to fetch data by column name
The following OOP
solution will work:
class OrderedByName():
"""
Privides a generator method, to iterate in Column Name ordered sequence
Provides subscription, to get columns index by name. using class[name]
"""
def __init__(self, sheet, fieldnames, row=0):
"""
Create a OrderedDict name:index from 'fieldnames'
:param sheet: The Worksheet to use
:param fieldnames: Ordered List of Column Names
:param row: Default Row Index for the Header Row
"""
from collections import OrderedDict
self.columns = OrderedDict().fromkeys(fieldnames, None)
for n in range(sheet.ncols):
self.columns[sheet.cell(row, n).value] = n
@property
def ncols(self):
"""
Generator, equal usage as range(xlrd.ncols),
to iterate columns in ordered sequence
:return: yield Column index
"""
for idx in self.columns.values():
yield idx
def __getitem__(self, item):
"""
Make class object subscriptable
:param item: Column Name
:return: Columns index
"""
return self.columns[item]
Usage:
# Worksheet Data
sheet([['Schedule', 'Cascade', 'Market'],
['SF05UB0', 'DO Macro Upgrade', 'Upper Cnetral Valley'],
['DE03HO0', 'DO Macro Upgrade', 'Toledo'],
['SF73XC4', 'DO Macro Upgrade', 'SF Bay']]
)
# Instantiate with Ordered List of Column Names
# NOTE the different Order of Column Names
by_name = OrderedByName(sheet, ['Cascade', 'Market', 'Schedule'])
# Iterate all Rows and all Columns Ordered as instantiated
for row in range(sheet.nrows):
for col in by_name.ncols:
value = sheet.cell(row, col).value
print("cell().value == ".format((row,col), value))
Output:
cell((0, 1)).value == Cascade
cell((0, 2)).value == Market
cell((0, 0)).value == Schedule
cell((1, 1)).value == DO Macro Upgrade
cell((1, 2)).value == Upper Cnetral Valley
cell((1, 0)).value == SF05UB0
cell((2, 1)).value == DO Macro Upgrade
cell((2, 2)).value == Toledo
cell((2, 0)).value == DE03HO0
cell((3, 1)).value == DO Macro Upgrade
cell((3, 2)).value == SF Bay
cell((3, 0)).value == SF73XC4
Get Index of one Column by Name
print("cell.value == ".format((1, by_name['Schedule']),
sheet.cell(1, by_name['Schedule']).value))
#>>> cell(1, 0).value == SF05UB0
Tested with Python: 3.5
edited Nov 17 '18 at 17:00
answered Nov 14 '18 at 22:10
stovflstovfl
7,96031131
7,96031131
thanks stovfl for your answer but you are only printing the column index in but i want to print all the data of corresponding of column name. can you show me how i should use these column index for fetch correspondin row data of it
– George.S
Nov 15 '18 at 21:23
@George.S: From your Question: " i know how to fetch data in case of fixed column.". Edit you Question and show a not fixed data table and how you do this using thecol_idx
list.
– stovfl
Nov 15 '18 at 21:43
Actually " i know how to fetch data in case of fixed column." but problem is that in your code if i changed column header of my excel. it is print the column index in same order. so tell me how would my code knows that which header is residing in which column. i think i have cleared my point.
– George.S
Nov 16 '18 at 8:01
Thanks for update but it is still not working when header of fieldnames['Cascade', 'Market', 'Schedule', 'Name] and Sheet(['Cascade', 'Schedule', 'Name', 'Market']) are equal. it is not showing the exact position of column header.
– George.S
Nov 16 '18 at 15:27
add a comment |
thanks stovfl for your answer but you are only printing the column index in but i want to print all the data of corresponding of column name. can you show me how i should use these column index for fetch correspondin row data of it
– George.S
Nov 15 '18 at 21:23
@George.S: From your Question: " i know how to fetch data in case of fixed column.". Edit you Question and show a not fixed data table and how you do this using thecol_idx
list.
– stovfl
Nov 15 '18 at 21:43
Actually " i know how to fetch data in case of fixed column." but problem is that in your code if i changed column header of my excel. it is print the column index in same order. so tell me how would my code knows that which header is residing in which column. i think i have cleared my point.
– George.S
Nov 16 '18 at 8:01
Thanks for update but it is still not working when header of fieldnames['Cascade', 'Market', 'Schedule', 'Name] and Sheet(['Cascade', 'Schedule', 'Name', 'Market']) are equal. it is not showing the exact position of column header.
– George.S
Nov 16 '18 at 15:27
thanks stovfl for your answer but you are only printing the column index in but i want to print all the data of corresponding of column name. can you show me how i should use these column index for fetch correspondin row data of it
– George.S
Nov 15 '18 at 21:23
thanks stovfl for your answer but you are only printing the column index in but i want to print all the data of corresponding of column name. can you show me how i should use these column index for fetch correspondin row data of it
– George.S
Nov 15 '18 at 21:23
@George.S: From your Question: " i know how to fetch data in case of fixed column.". Edit you Question and show a not fixed data table and how you do this using the
col_idx
list.– stovfl
Nov 15 '18 at 21:43
@George.S: From your Question: " i know how to fetch data in case of fixed column.". Edit you Question and show a not fixed data table and how you do this using the
col_idx
list.– stovfl
Nov 15 '18 at 21:43
Actually " i know how to fetch data in case of fixed column." but problem is that in your code if i changed column header of my excel. it is print the column index in same order. so tell me how would my code knows that which header is residing in which column. i think i have cleared my point.
– George.S
Nov 16 '18 at 8:01
Actually " i know how to fetch data in case of fixed column." but problem is that in your code if i changed column header of my excel. it is print the column index in same order. so tell me how would my code knows that which header is residing in which column. i think i have cleared my point.
– George.S
Nov 16 '18 at 8:01
Thanks for update but it is still not working when header of fieldnames['Cascade', 'Market', 'Schedule', 'Name] and Sheet(['Cascade', 'Schedule', 'Name', 'Market']) are equal. it is not showing the exact position of column header.
– George.S
Nov 16 '18 at 15:27
Thanks for update but it is still not working when header of fieldnames['Cascade', 'Market', 'Schedule', 'Name] and Sheet(['Cascade', 'Schedule', 'Name', 'Market']) are equal. it is not showing the exact position of column header.
– George.S
Nov 16 '18 at 15:27
add a comment |
Alternatively you could also make use of pandas
, which is a comprehensive data analysis library with built-in excel I/O capabilities.
import pandas as pd
file_location =r"C:UsersesatnirDesktopSprint Vision.xlsx"
# Read out first sheet of excel file and return as pandas dataframe
df = pd.read_excel(file_location)
# Reduce dataframe to target columns (by filtering on column names)
df = df[['Cascade', 'Schedule Name', 'Market']]
where a quick view of the resulting dataframe df
will show:
In [1]: df
Out[1]:
Cascade Schedule Name Market
0 SF05UB0 DO Macro Upgrade Upper Central Valley
1 DE03HO0 DO Macro Upgrade Toledo
2 SF73XC4 DO Macro Upgrade SF Bay
Thank Xukrao for your answer but i do not know how to perform operation over excel data using pandas. so i am unable to use it.
– George.S
Nov 16 '18 at 15:30
add a comment |
Alternatively you could also make use of pandas
, which is a comprehensive data analysis library with built-in excel I/O capabilities.
import pandas as pd
file_location =r"C:UsersesatnirDesktopSprint Vision.xlsx"
# Read out first sheet of excel file and return as pandas dataframe
df = pd.read_excel(file_location)
# Reduce dataframe to target columns (by filtering on column names)
df = df[['Cascade', 'Schedule Name', 'Market']]
where a quick view of the resulting dataframe df
will show:
In [1]: df
Out[1]:
Cascade Schedule Name Market
0 SF05UB0 DO Macro Upgrade Upper Central Valley
1 DE03HO0 DO Macro Upgrade Toledo
2 SF73XC4 DO Macro Upgrade SF Bay
Thank Xukrao for your answer but i do not know how to perform operation over excel data using pandas. so i am unable to use it.
– George.S
Nov 16 '18 at 15:30
add a comment |
Alternatively you could also make use of pandas
, which is a comprehensive data analysis library with built-in excel I/O capabilities.
import pandas as pd
file_location =r"C:UsersesatnirDesktopSprint Vision.xlsx"
# Read out first sheet of excel file and return as pandas dataframe
df = pd.read_excel(file_location)
# Reduce dataframe to target columns (by filtering on column names)
df = df[['Cascade', 'Schedule Name', 'Market']]
where a quick view of the resulting dataframe df
will show:
In [1]: df
Out[1]:
Cascade Schedule Name Market
0 SF05UB0 DO Macro Upgrade Upper Central Valley
1 DE03HO0 DO Macro Upgrade Toledo
2 SF73XC4 DO Macro Upgrade SF Bay
Alternatively you could also make use of pandas
, which is a comprehensive data analysis library with built-in excel I/O capabilities.
import pandas as pd
file_location =r"C:UsersesatnirDesktopSprint Vision.xlsx"
# Read out first sheet of excel file and return as pandas dataframe
df = pd.read_excel(file_location)
# Reduce dataframe to target columns (by filtering on column names)
df = df[['Cascade', 'Schedule Name', 'Market']]
where a quick view of the resulting dataframe df
will show:
In [1]: df
Out[1]:
Cascade Schedule Name Market
0 SF05UB0 DO Macro Upgrade Upper Central Valley
1 DE03HO0 DO Macro Upgrade Toledo
2 SF73XC4 DO Macro Upgrade SF Bay
answered Nov 14 '18 at 22:21
XukraoXukrao
2,4032829
2,4032829
Thank Xukrao for your answer but i do not know how to perform operation over excel data using pandas. so i am unable to use it.
– George.S
Nov 16 '18 at 15:30
add a comment |
Thank Xukrao for your answer but i do not know how to perform operation over excel data using pandas. so i am unable to use it.
– George.S
Nov 16 '18 at 15:30
Thank Xukrao for your answer but i do not know how to perform operation over excel data using pandas. so i am unable to use it.
– George.S
Nov 16 '18 at 15:30
Thank Xukrao for your answer but i do not know how to perform operation over excel data using pandas. so i am unable to use it.
– George.S
Nov 16 '18 at 15:30
add a comment |
Your column names are in the first row of the spreadsheet, right? So read the first row and construct a mapping from names to column indices.
column_pos = [ (sheet.cell(0, i).value, i) for i in range(sheet.ncols) ]
colidx = dict(column_pos)
Or as a one-liner:
colidx = dict( (sheet.cell(0, i).value, i) for i in range(sheet.ncols) )
You can then use the index to interpret column names, for example:
print(sheet.cell(5, colidx["Schedule Name"]).value)
To get an entire column, you can use a list comprehension:
schedule = [ sheet.cell(i, colidx["Schedule Name"]).value for i in range(1, sheet.nrows) ]
If you really wanted to, you could create a wrapper for the cell
function that handles the interpretation. But I think this is simple enough.
thanks Alexis for your answer. i want to fetch complete data of 'schedule name' instead of individual value. can you show me how ?
– George.S
Nov 15 '18 at 21:04
Done. (I assume row 0 contains the column names, so it's not included in the column values.)
– alexis
Nov 15 '18 at 21:51
add a comment |
Your column names are in the first row of the spreadsheet, right? So read the first row and construct a mapping from names to column indices.
column_pos = [ (sheet.cell(0, i).value, i) for i in range(sheet.ncols) ]
colidx = dict(column_pos)
Or as a one-liner:
colidx = dict( (sheet.cell(0, i).value, i) for i in range(sheet.ncols) )
You can then use the index to interpret column names, for example:
print(sheet.cell(5, colidx["Schedule Name"]).value)
To get an entire column, you can use a list comprehension:
schedule = [ sheet.cell(i, colidx["Schedule Name"]).value for i in range(1, sheet.nrows) ]
If you really wanted to, you could create a wrapper for the cell
function that handles the interpretation. But I think this is simple enough.
thanks Alexis for your answer. i want to fetch complete data of 'schedule name' instead of individual value. can you show me how ?
– George.S
Nov 15 '18 at 21:04
Done. (I assume row 0 contains the column names, so it's not included in the column values.)
– alexis
Nov 15 '18 at 21:51
add a comment |
Your column names are in the first row of the spreadsheet, right? So read the first row and construct a mapping from names to column indices.
column_pos = [ (sheet.cell(0, i).value, i) for i in range(sheet.ncols) ]
colidx = dict(column_pos)
Or as a one-liner:
colidx = dict( (sheet.cell(0, i).value, i) for i in range(sheet.ncols) )
You can then use the index to interpret column names, for example:
print(sheet.cell(5, colidx["Schedule Name"]).value)
To get an entire column, you can use a list comprehension:
schedule = [ sheet.cell(i, colidx["Schedule Name"]).value for i in range(1, sheet.nrows) ]
If you really wanted to, you could create a wrapper for the cell
function that handles the interpretation. But I think this is simple enough.
Your column names are in the first row of the spreadsheet, right? So read the first row and construct a mapping from names to column indices.
column_pos = [ (sheet.cell(0, i).value, i) for i in range(sheet.ncols) ]
colidx = dict(column_pos)
Or as a one-liner:
colidx = dict( (sheet.cell(0, i).value, i) for i in range(sheet.ncols) )
You can then use the index to interpret column names, for example:
print(sheet.cell(5, colidx["Schedule Name"]).value)
To get an entire column, you can use a list comprehension:
schedule = [ sheet.cell(i, colidx["Schedule Name"]).value for i in range(1, sheet.nrows) ]
If you really wanted to, you could create a wrapper for the cell
function that handles the interpretation. But I think this is simple enough.
edited Nov 15 '18 at 21:51
answered Nov 14 '18 at 22:23
alexisalexis
34.1k1056115
34.1k1056115
thanks Alexis for your answer. i want to fetch complete data of 'schedule name' instead of individual value. can you show me how ?
– George.S
Nov 15 '18 at 21:04
Done. (I assume row 0 contains the column names, so it's not included in the column values.)
– alexis
Nov 15 '18 at 21:51
add a comment |
thanks Alexis for your answer. i want to fetch complete data of 'schedule name' instead of individual value. can you show me how ?
– George.S
Nov 15 '18 at 21:04
Done. (I assume row 0 contains the column names, so it's not included in the column values.)
– alexis
Nov 15 '18 at 21:51
thanks Alexis for your answer. i want to fetch complete data of 'schedule name' instead of individual value. can you show me how ?
– George.S
Nov 15 '18 at 21:04
thanks Alexis for your answer. i want to fetch complete data of 'schedule name' instead of individual value. can you show me how ?
– George.S
Nov 15 '18 at 21:04
Done. (I assume row 0 contains the column names, so it's not included in the column values.)
– alexis
Nov 15 '18 at 21:51
Done. (I assume row 0 contains the column names, so it's not included in the column values.)
– alexis
Nov 15 '18 at 21:51
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53308559%2fhow-to-read-excel-data-by-column-name-in-python-using-xlrd%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Edit your Question and give an examples of "by column name instead of column number"
– stovfl
Nov 14 '18 at 21:07
i have made changes in my question.
– George.S
Nov 14 '18 at 21:21
can you show me how ?
– George.S
Nov 14 '18 at 21:31