在多个df

时间:2018-06-08 04:54:41

标签: python pandas dataframe optimization file-io

我需要读取多个大型.csv(20k行x 6k列)并将它们存储在数据帧中。

这个thread有很好的例子,过去我用的文件比较小。

如:

pd.concat((pd.read_csv(f,index_col='Unnamed: 0') for f in file_list))

我尝试过的其他更直接的方法是:

frame = pd.DataFrame()
list_ = []
for file_ in file_list:
    print(file_)
    df = pd.read_csv(file_,index_col=0)
    list_.append(df)
df = pd.concat(list_)

然而,所有解决方案都围绕创建所有csv文件的列表作为单独的df,然后在所有df的末尾使用pd.concat()

据我所知,这种方法在连接这些df的时候会导致内存错误。

  • 我怎么能超越这个并且可能在我去的时候追加每个df?

file_list示例:

/realtimedata/orderbooks/bitfinex/btcusd/bitfinex_btcusd_orderbook_2018_05_26.csv
/realtimedata/orderbooks/bitfinex/btcusd/bitfinex_btcusd_orderbook_2018_05_30.csv
/realtimedata/orderbooks/bitfinex/btcusd/bitfinex_btcusd_orderbook_2018_05_25.csv
/realtimedata/orderbooks/bitfinex/btcusd/bitfinex_btcusd_orderbook_2018_05_19.csv
/realtimedata/orderbooks/bitfinex/btcusd/bitfinex_btcusd_orderbook_2018_05_27.csv
/realtimedata/orderbooks/bitfinex/btcusd/bitfinex_btcusd_orderbook_2018_05_18.csv
/realtimedata/orderbooks/bitfinex/btcusd/bitfinex_btcusd_orderbook_2018_05_28.csv
/realtimedata/orderbooks/bitfinex/btcusd/bitfinex_btcusd_orderbook_2018_05_23.csv
/realtimedata/orderbooks/bitfinex/btcusd/bitfinex_btcusd_orderbook_2018_06_03.csv
/realtimedata/orderbooks/bitfinex/btcusd/bitfinex_btcusd_orderbook_2018_05_24.csv
/realtimedata/orderbooks/bitfinex/btcusd/bitfinex_btcusd_orderbook_2018_05_29.csv
/realtimedata/orderbooks/bitfinex/btcusd/bitfinex_btcusd_orderbook_2018_06_04.csv
/realtimedata/orderbooks/bitfinex/btcusd/bitfinex_btcusd_orderbook_2018_05_20.csv
/realtimedata/orderbooks/bitfinex/btcusd/bitfinex_btcusd_orderbook_2018_05_22.csv
/realtimedata/orderbooks/bitfinex/btcusd/bitfinex_btcusd_orderbook_2018_06_06.csv
/realtimedata/orderbooks/bitfinex/btcusd/bitfinex_btcusd_orderbook_2018_06_05.csv
/realtimedata/orderbooks/bitfinex/btcusd/bitfinex_btcusd_orderbook_2018_06_01.csv
/realtimedata/orderbooks/bitfinex/btcusd/bitfinex_btcusd_orderbook_2018_06_02.csv
/realtimedata/orderbooks/bitfinex/btcusd/bitfinex_btcusd_orderbook_2018_05_31.csv
/realtimedata/orderbooks/bitfinex/btcusd/bitfinex_btcusd_orderbook_2018_05_21.csv

1 个答案:

答案 0 :(得分:1)

您的CSV仍然可以管理大小,因此我认为问题在于标题错位。

我建议您在没有任何标题的情况下阅读DataFrame,这样就可以对齐连接。

list_ = []
for file_ in file_list:
    df = pd.read_csv(file_, index_col=0, skiprows=1, header=None)
    list_.append(df)

df = pd.concat(list_)