我有14個數據幀,每個數據幀有14列和250,000多行。 數據幀具有相同的列標題,我想按行逐行合併數據幀。我試圖將數據幀連接到「不斷增長的」數據幀,這需要幾個小時。將熊貓數據幀逐行組合的高效方法
從本質上講,我是在做類似下面的13倍:
DF = pd.DataFrame()
for i in range(13):
DF = pd.concat([DF, subDF])
的計算器答案here建議附加的所有子數據幀列表,然後連接子數據幀的列表。
這聽起來像是在做這樣的事情:
DF = pd.DataFrame()
lst = [subDF, subDF, subDF....subDF] #up to 13 times
for subDF in lst:
DF = pd.concat([DF, subDF])
他們不是一回事?也許我誤解了建議的工作流程。這是我測試的。
import numpy
import pandas as pd
import timeit
def test1():
"make all subDF and then concatenate them"
numpy.random.seed(1)
subDF = pd.DataFrame(numpy.random.rand(1))
lst = [subDF, subDF, subDF]
DF = pd.DataFrame()
for subDF in lst:
DF = pd.concat([DF, subDF], axis=0,ignore_index=True)
def test2():
"add each subDF to the collecitng DF as you're making the subDF"
numpy.random.seed(1)
DF = pd.DataFrame()
for i in range(3):
subDF = pd.DataFrame(numpy.random.rand(1))
DF = pd.concat([DF, subDF], axis=0,ignore_index=True)
print('test1() takes {0} sec'.format(timeit.timeit(test1, number=1000)))
print('test2() takes {0} sec'.format(timeit.timeit(test2, number=1000)))
>> Output
test1() takes 12.732409087137057 sec
test2() takes 15.097430311612698 sec
我很感激你的有效途徑建議,串聯多個大數據幀逐行。謝謝!
您是否想過通過追加數據將它們放到一個csv中,然後將該csv作爲DF讀取。不應該花幾個小時。 – Merlin