2017-07-31 144 views
-1

我有一个Excel表格。我想从它解析一个特定的列,并在python中从该列中的每个单元格执行操作。我能够使用熊猫解析列作为,从excel中读取DataFrame并对其执行操作

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

我能够使用上述命令从表格Prod中解析列“C”。现在,它将同时打印所有单元格的数据。我想对每个单元执行操作。可以有人建议如何做到这一点?

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

+0

在Pandas中,我们总是想先尝试矢量化的方法,所以知道你想应用于'C'列是什么样的行为可能很重要,以便给你最好的答案... – MaxU

+0

你想要什么去做? –

+0

我想将每个单元格数据保存在一个变量中,并对它们中的每一个执行api调用。就像我将需要做的循环,它将一次读取一个单元格,并使api调用与该数据做一些事情,并重新运行循环。如果熊猫不适合这个,我还应该使用什么? – Meet101

回答

0

你能做到在一个链接步,用DataFrame.eval()方法:

演示 - 方柱C

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

我更新了问题。我不认为.eval会适用于我的情况。你能看看更新后的问题吗? – Meet101

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调用不会ŧ O返回(你关心或无)的值,那么你可以使用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=Trueread_excel通话。这导致Excel数据存储在熊猫Series而不是DataFrame

相关问题