2017-07-29 62 views
1

我有100個數據框(格式完全一樣)保存在我的磁盤上,因爲有100個泡菜文件。這些數據幀的長度大約爲250,000行。我想將1個數據幀中的所有100個數據幀保存在我的磁盤上,作爲1個pickle文件。在Python中添加泡菜文件

這是我到目前爲止做:

path = '/Users/srayan/Desktop/MyData/Pickle' 
df = pd.DataFrame() 
for filename in glob.glob(os.path.join(path, '*.pkl')): 
    newDF = pd.read_pickle(filename) 
    df = df.append(newDF) 
df.to_pickle("/Users/srayan/Desktop/MyData/Pickle/MergedPickle.pkl") 

據我所知,泡菜序列化的數據幀,但我有必要把我的泡菜文件,反序列化它,追加的數據幀,然後序列化它呢?還是有更快的方法來做到這一點?與所有的數據我有,我收到放緩

+0

希望該鏈接將幫助https://stackoverflow.com/questions/2857970/why-doesnt-appending-binary-pickles-work – Wen

回答

1

您可以使用list comprehension與附加每個dflist只有一次concat

files = glob.glob('files/*.pkl') 
df = pd.concat([pd.read_pickle(fp) for fp in files], ignore_index=True) 

什麼是一樣的:

dfs = [] 
for filename in glob.glob('files/*.pkl'): 
    newDF = pd.read_pickle(filename) 
    dfs.append(newDF) 
df = pd.concat(dfs, ignore_index=True)