2016-04-28 7 views
0
  • 私はpandas/pythonの新人です。かなり広範囲にExcelとStataを使用しています。
  • フォーマットを変更しないサプライヤから、複数のテーブルを含む.csvファイルが取得されます。
  • テーブルにはヘッダーと空白の行があります。
  • 各テーブルの行数が
  • を変えることができ、テーブルの数も(私はちょうど発見!)変化するように思わ
  • 私が管理している
  • ファイルに来ることができる23個の可能なテーブルがあります

    pd.read_csv index = 0を使用して複数のテーブルと解析データフレーム

    :私は、インデックスここ= 0

によってグループに見えることはできませんファイル

  • から一つの大きなデータフレームを作成するコードは、私がこれまで持っていますここで0

    は、最初の3つのテーブルを持つ.csvファイルのサンプルです:あなたが必要

    Record Identifier Sender ID Receiver ID Action Warehouse ID Warehouse Name System Close Date DBA Address Address 2 City State Postal Code Phone Fax Primary Contact Email FEIN DUNS GLN    
    WAREHOUSE COX SUPPLIERX Change 1 Richmond 20160127 Company 700 Court  Anywhere CA 99999 5555555555 5555555555 na na 0 50682020      
    
    Record Identifier Sender ID Receiver ID Sender Supplier ID Supplier Name Supplier Family                  
    SUPPLIER COX SUPPLIERX 16 SUPPLIERX SUPPLIERX                  
    
    Record Identifier Sender ID Receiver ID Supplier Product Number Sender Product ID Product Name Sender Brand ID Active Cases Per Pallet Cases Per Layer Case GTIN Carrier GTIN Unit GTIN Package Name Case Weight Case Height Case Width Case Length Case Ounces Case Equivalents Retail Units Per Case Consumable Units Per Case Selling Unit Of Measure Container Material 
    PRODUCT COX SUPPLIERX  53030 LAG DOGTOWN PALE ALE 4/6/12OZ NR 217 Active 70 10 7.2383E+11 7.2383E+11 7.2383E+11 4/6/12oz NR 31.9 9.5 10.75 15.5 288 1 4 24 Case Aluminum 
    PRODUCT COX SUPPLIERX  53071 LAG DOGTOWN PALE ALE 1/2 KEG 217 Active 8 8  0  KEG-1/2 BBL 160.6 23.5 15.75 15.75 1984 6.888889 1 1 Each Aluminum 
    PRODUCT COX SUPPLIERX 2100008003 53122 LAG CAPPUCCINO STOUT 12/22OZ NR 221 Active 75 15 7.2383E+11 7.2383E+11 7.2383E+11 12/22oz NR 33.6 9.5 10.75 14.2083 264 0.916667 12 12 Case Aluminum 
    PRODUCT COX SUPPLIERX  53130 LAG SUCKS ALE 4/6/12OZ NR 1473 Active 70 10 7.23831E+11 7.2383E+11 7.2383E+11 4/6/12oz NR 31.9 9.5 10.75 15.5 288 1 4 24 Case Aluminum 
    PRODUCT COX SUPPLIERX  53132 LAG SUCKS ALE 12/32oz NR 1473 Active 50 10 7.23831E+11 7.2383E+11 7.2383E+11 12/32oz NR 38.2 9.5 10.75 20.6667 384 1.333333 12 12 Case Aluminum 
    PRODUCT COX SUPPLIERX  53170 LAG SUCKS ALE 1/4 KEG 1473 Inactive 1 1  0 1.11111E+11 KEG-1/4 BBL 87.2 11.75 17 17 992 3.444444 1 1 Each Aluminum 
    PRODUCT COX SUPPLIERX  53171 LAG FARMHOUSE SAISON 1/2 KEG 1478 Inactive 16 1  0  KEG-1/2 BBL 160.6 23.5 15.75 15.75 1984 6.888889 1 1 Each Aluminum 
    PRODUCT COX SUPPLIERX  53172 LAG SUCKS ALE 1/2 KEG 1473 Active 80 4  0  KEG-1/2 BBL 160.6 23.5 15.75 15.75 1984 6.888889 1 1 Each Aluminum 
    PRODUCT COX SUPPLIERX  53255 LAG FARMHOUSE HOP STOOPID ALE 12/22 222 Active 75 15 7.23831E+11 7.2383E+11 7.2383E+11 12/22oz NR 33.6 9.5 10.75 14.2083 264 0.916667 12 12 Case Aluminum 
    PRODUCT COX SUPPLIERX  53271 LAG FARMHOUSE HOP STOOPID 1/2 KEG 222 Active 8 8  0  KEG-1/2 BBL 160.6 23.5 15.75 15.75 1984 6.888889 1 1 Each Aluminum 
    PRODUCT COX SUPPLIERX  53330 LAG CENSORED ALE 4/6/12OZ NR 218 Active 70 10 7.23831E+11 7.2383E+11 7.2383E+11 4/6/12oz NR 31.9 9.5 10.75 15.5 288 1 4 24 Case Aluminum 
    PRODUCT COX SUPPLIERX  53331 LAG CENSORED ALE 2/12/12 OZ NR 218 Inactive 60 1 7.2383E+11 7.2383E+11 7.2383E+11 2/12/12oz NR 31.9 9.5 10.75 15.5 288 1 2 24 Case Aluminum 
    PRODUCT COX SUPPLIERX  53333 LAG CENSORED ALE 24/12 OZ NR 218 Inactive 70 1   7.2383E+11 24/12oz NR 31.9 9.5 10.75 15.5 288 1 1 24 Case Aluminum 
    
  • 答えて

    0

    これが働いて、それから私は少しは= 『インポートIO』を使用してインデックス「インデックスを設定する必要がありました.Tweaking「」テーブル

    df = pd.read_csv(fileloaction.csv',delim_whitespace=True,names=range(25)) table_names=["WAREHOUSE","SUPPLIER","PRODUCT"] groups = df[0].isin(table_names).cumsum() tables = {g.iloc[0,1]: g.iloc[0] for k,g in df.groupby(groups)}

    2

    最初の事はきれいにあなたのデータをロードするだけです。あなたのコードがそれを指定していなくても、あなたの入力ファイルはタブで区切られていると仮定します。このコードは私にとって役に立ちます:

    from cStringIO import StringIO 
    import pandas as pd 
    
    subfiles = [StringIO()] 
    
    with open('t.txt') as bigfile: 
        for line in bigfile: 
         if line.strip() == "": # blank line, new subfile                                  
          subfiles.append(StringIO()) 
         else: # continuation of same subfile                                     
          subfiles[-1].write(line) 
    
    for subfile in subfiles: 
        subfile.seek(0) 
        table = pd.read_csv(subfile, sep='\t') 
        print '*****************' 
        print table 
    

    基本的には、元のファイルを空白行を探してサブファイルに分割します。それが完了したら、正しいsep文字を指定する限り、パンダでチャンクを読むのは簡単です。

    +0

    感謝@ジョンZwinck 9月=を作成するためにスライサーを使用しました( 'レコード識別子') subfile.format( 'レコード識別子') 'まだありません – Carl

    関連する問題