2017-07-31 1 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呼び出しを作りたいです。だから私は一度に1つの販売のデータを読み取ることができますし、私はそのセルのデータを使用してループを再実行してAPIコールを実行することができますforループのいくつかの種類が必要です。

デモ - 二乗列C

+0

パンダでは常にベクトル化アプローチを試してみたいので、最良の答えを得るために、列 'C'にどのようなアクションを適用したいのかを知ることが重要です。 – MaxU

+0

何が欲しいですか何をする? –

+0

私は変数に各セルのデータを保存し、それぞれのセルでapi呼び出しを実行します。私は一度に1つのセルを読み込み、そのデータで何かをしてループを再実行するように呼び出すためにループのために行う必要があります。パンダがこれにうまくいかない場合は、他に何を使うべきですか? – Meet101

答えて

0

あなたはDataFrame.eval()方法を使用して、1つのチェーンのステップでそれを行うことができ

あなたのAPIコールは、単一の値を返すたびに(つまり、いくつかの操作を行います
Y = pandas.read_excel("C:\foo\abc.xlsx", sheetname="Prod", 
         parse_cols="C", header=1) \ 
      .eval("C**2", inplace=False) 
+0

私は質問を更新しました。 .evalは私の状況ではうまくいくとは思わない。更新された質問をご覧ください。 – Meet101

0

場合

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コールが起こっていない場合は、T:あなたは、あなたがこのようなmapを使用することができ、)収集したいです

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` 

注:O、あなたはこのようiteritemsを使用することができ、値(またはあなたが気に何を)返す私はread_excelコールにパラメータsqueeze=Trueを追加しました。これにより、エクセルデータはDataFrameの代わりにパンダSeriesに格納されます。

関連する問題