Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python loc是构建熊猫数据帧的最佳方法吗?_Python_Pandas_Dataframe - Fatal编程技术网

Python loc是构建熊猫数据帧的最佳方法吗?

Python loc是构建熊猫数据帧的最佳方法吗?,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个相当大的csv文件(700mb),其组合如下: qCode Date Value A_EVENTS 11/17/2014 202901 A_EVENTS 11/4/2014 801 A_EVENTS 11/3/2014 2.02E+14 A_EVENTS 10/17/2014 203901 etc. 我的问题是,向现有数据帧添加值的最有效方法是什么?由于这项行动似乎需要10个多小时 fyi字段是DF中的列(我感兴趣的值),索引(i

我有一个相当大的csv文件(700mb),其组合如下:

qCode Date Value A_EVENTS 11/17/2014 202901 A_EVENTS 11/4/2014 801 A_EVENTS 11/3/2014 2.02E+14 A_EVENTS 10/17/2014 203901 etc. 我的问题是,向现有数据帧添加值的最有效方法是什么?由于这项行动似乎需要10个多小时

fyi字段是DF中的列(我感兴趣的值),索引(i)是字符串


谢谢

如果我理解正确,我想这样做会更快:

  • 使用
    pandas.read\u csv
    将整个csv导入数据框
  • 从数据框中选择感兴趣的行
  • 使用
    df.Append(other_df)
    将行附加到其他数据帧

  • 如果您提供了更多关于您在步骤2中使用的标准的信息,我也可以在那里提供代码。

    想到的几个选项

    1) 按照您当前所做的方式解析文件,但构建一个dict,以便附加到数据帧。完成该操作后,将该dict转换为数据帧,然后使用concat()将其与现有数据帧组合


    2) 使用read_csv()将该csv导入pandas,然后对所需内容进行过滤/解析,然后对现有数据帧执行concat(),不应逐行构建数据帧。每次执行此操作时,都必须复制整个数据帧(它不是就地扩展的),因此使用n+(n-1)+(n-2)+…+1,O(n^2),内存(必须进行垃圾收集)。。。这太可怕了,所以要花几个小时

    您想使用
    读取\u csv
    ,您有几个选项:

    • 一次性读取整个文件(即使只需几gig内存,700mb也可以)

    • 分块读取csv,然后将它们粘在一起(内存中)。。。tbh我不认为这会比上面使用更少的内存,但是如果你在这一步做一些咀嚼,这通常是有用的

      pd.concat(pd.read_csv('foo.csv', chunksize=100000))  # not sure what optimum value is for chunksize
      
    • 分块读取csv并将其保存到pytables中(而不是内存中),如果您的数据多于内存(并且您已经购买了更多内存),则使用pytables/hdf5

      store = pd.HDFStore('store.h5')
      for df in pd.read_csv('foo.csv', chunksize=100000):
          store.append('df', df)
      
    pd.concat(pd.read_csv('foo.csv', chunksize=100000))  # not sure what optimum value is for chunksize
    
    store = pd.HDFStore('store.h5')
    for df in pd.read_csv('foo.csv', chunksize=100000):
        store.append('df', df)