私はpandas DataFrameの各行で呼び出す関数を持っており、各関数呼び出し(各繰り返し)の結果を保存したいと思います。以下は、私がやろうとしていることの例です。ループの結果を素早く保存するPython
data =[{'a':1,'b':2,'c':3},{'a':1,'b':2,'c':3}, {'a':1,'b':2,'c':3}]
InputData = pd.DataFrame(data)
ResultData = pd.DataFrame(columns = ['a', 'b', 'c'])
def SomeFunction(row):
#Function code goes here (not important to this question)#
##########################################################
##########################################################
return Temp
for index, row in InputData.iterrows():
# Temp will equal the result of the function (a DataFrame with 3 columns and 1 Row)
Temp = Somefunction(row)
# If ResultData is not empty append Temp to ResultData
if len(ResultData) != 0:
ResultData = ResultData.append(Temp, ignore_index = True)
# If ResultData is empty Result data = Temp
else:
ResultData = Temp
私の例は、以下のとおりです。
私の実際の例では、入力データには約100万行があり、このプロセスは非常に遅く、それは遅くなっているDataFrameを追加していると思います。おそらく、 "Temp" DataFrameの3つの値を格納できる別のデータ構造がありますが、最後に "ResultData" DataFrameを追加することができますか?
すべてのヘルプははるかに
あなたの機能は、この質問にとって非常に重要です。それは事実上重要な唯一のものです。 –
'df.iterrows()'はある種の遅い系列を返します。本当に 'SomeFunction'には系列が必要ですか? –
@StevenG - 必要なのは、各行のすべての値です。すなわち、この例では1,2,3が必要です。私はそれがシリーズである必要はないと思う、それはリストまたはその他のデータ構造である可能性があります。 – Ayelavan