我有 14 个数据框,每个数据框有 14 列和超过 250,000 行。
数据框具有相同的列标题,我想按行合并数据框。我尝试将数据帧连接到“不断增长的”数据帧,这需要几个小时。
本质上,我做了如下 13 次这样的事情:
DF = pd.DataFrame()
for i in range(13):
DF = pd.concat([DF, subDF])
堆栈溢出的答案here https://stackoverflow.com/a/29808739/3594865建议将所有子数据帧附加到列表中,然后连接子数据帧列表。
这听起来像是在做这样的事情:
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
我很感激您关于连接多个的有效方法的建议large数据帧按行排列。谢谢!