2016-04-28 11 views
1

私はdataframeに多くの製品A、B、C、Dがあります...関数を何回も自動的に呼び出す方法は?

私はすべての製品のデータを収集することができる関数を作成しました。

私のファイルには多くの製品(20)があり、各製品の機能を呼び出す必要があります。

My機能は次のとおりです。あなたはどのように私は私のコードは一度だけの代わりに、20回を呼び出すために、この機能を自動化することができ

# function for prooduct A 
function_product(["A"]) 

df_A_ = pd.DataFrame(file, columns = ['VAR1','VAR2']) 

df_A = df_A_[1:] 

df_A["Products"] = "A" 

知っていますか?

+0

あなたの機能が何をしているかわかりません。あなたはSO命令plzに従ってそれを入力できますか? (例えば、インデントは分かります)、少し説明してください。 IIUCでは、すでにファイルがロードされており、そのデータフレームを作成し、最初の行を消去して、製品のラベルを含む列を追加します。 – ysearka

+1

[最小限の完全で検証可能な例](http://stackoverflow.com/help/mcve)を提供していただけますか? – Thanos

答えて

1

あなたは以下のように、そのためにループを使用することができます。

products = ["A", "B", "C", "D"] 
for product in products: 
    function_product([product]) 

上記のスクリプトはproductsリストに記載されているすべての製品に対してfunction_productメソッドを呼び出します。

+0

ありがとうEbraHim、 しかし、すべての製品ですべてのDataFrameを作成するわけではありません。 1つのデータフレームにすべての製品を統合して分析するために、各製品ごとに1つのデータフレームを作成する必要があります。 –

+0

@BENAMARAILANよろしくお願いいたします。これがあなたの望むものであれば、私の答えの左側のチェックマークをクリックすることで答えとしてマークすることができます:) – EbraHim

+0

いいえ、私は何を望んでいない、私は関数で多くのデータフレームを作成したい。 –

0

はいファイルが既に読み込まれています。そのファイルには

、私はそのフォーム上のすべての私の製品を持っている:

products price 
A|B|C   10|20|30 

私は製品A

の価格はだから私の関数の中で私は、テープかを知りたいと思います:

def report(product): 
    price_index = file[0].index(price) 
    price_products = file[price_index].split("|") 
    for i in file: 
     if products[i] in product: 
      total_price += float(price_products[i]) 

と は、他のブロックの上に私は、テープ:

report("A") 
df_A_ = pd.DataFrame(file, columns = ['VAR1','VAR2']) 
df_A = df_A_[1:] 
df_A["Products"] = "A" 

私はすべての製品でループを作成し、私の関数justeを一度呼びたいと思います。

あなたが作成した製品のリストを持っていない場合のおかげ

0

は:

list_products = products.split('|') 
list_prices = prices.split('|') 

次に、あなたがあなたのデータフレームを含むリストを作成することができます。

import pandas as pd 
list_df = [] 
for i in range(len(list_products)): 
    list_df.append(pd.DataFrame({'product':[list_products[i]],'price':[list_prices[i]]})) 

それともしたい場合すべての価格と製品を含む1つのデータフレームを作成します。

df = pd.DataFrame({'product':list_products,'price':list_prices}) 
関連する問題