从excel读取DataFrame并对其执行操作

时间:2017-07-31 14:13:13

标签: python excel pandas csv

我有一张excel表。我想从中解析一个特定的列,并对python中该列的每个单元格执行操作。我可以使用panda解析列,

import pandas
Y = pandas.read_excel("C:\foo\abc.xlsx", sheetname="Prod", 
parse_cols="C", header=1)
print Y

我能够解析列" C"来自表Prod使用上述命令。现在,它同时打印所有单元格的数据。我想对每个单元格执行操作。有人可以建议怎么做吗?

我想保存每个单元格数据并使用该数据进行一些api调用。所以我需要某种for循环,它可以一次读取单个卖出的数据然后我可以通过使用该单元格数据执行api调用并重新运行循环。

2 个答案:

答案 0 :(得分:0)

您可以使用DataFrame.eval()方法在一个链式步骤中执行此操作:

演示 - 平方栏C

Y = pandas.read_excel("C:\foo\abc.xlsx", sheetname="Prod", 
                      parse_cols="C", header=1) \
          .eval("C**2", inplace=False)

答案 1 :(得分:0)

如果您的API调用每次返回单个值(您想要收集)时都会执行某些操作,那么您可以使用map,如下所示:

import pandas as pd


def some_kind_of_function(data_value):
   # Do some API call here that transforms `data_value` into `output_value`

   return output_value


s1 = pd.read_excel("C:\foo\abc.xlsx", sheetname="Prod", parse_cols="C", header=1, squeeze=True)
s2 = s1.map(some_kind_of_function)    

如果您的API调用不会返回值(或者您不关心任何内容),那么您可以像这样使用iteritems

import pandas as pd

s1 = pd.read_excel("C:\foo\abc.xlsx", sheetname="Prod", parse_cols="C", header=1, squeeze=True)

for (index_value, data_value) in s1.iteritems():
    # Do some API call here that uses `data_value`

注意:我已将参数squeeze=True添加到read_excel来电。这会导致excel数据存储在pandas Series中,而不是DataFrame