2017-07-31 147 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

相關問題