0

dataframe同じタイプと構造のいくつかのファイルを追加する空のファイルをフィードしたいと思います。ただし、ここで何が問題になっているのかわかりません。

def files2df(colnames, ext):
    df = DataFrame(columns = colnames)
    for inf in sorted(glob.glob(ext)):
        dfin = read_csv(inf, sep='\t', skiprows=1)
        print(dfin.head(), '\n')
        df.append(dfin, ignore_index=True)
    return df

結果のデータフレームは空です。誰かが私に手を貸してくれませんか?

    1.0  16.59  0.597  0.87  1.0.1   3282 100.08
 0  0.953  14.52  0.561  0.80   0.99   4355      -
 1  1.000  31.59  1.000  0.94   1.00   6322      -
 2  1.000   6.09  0.237  0.71   1.00  10568      -
 3  1.000  31.29  1.000  0.94   1.00  14363      -
 4  1.000  31.59  1.000  0.94   1.00  19797      - 

      1.0   6.69  0.199  0.74  1.0.1   186 13.16
 0      1   0.88  0.020  0.13   0.99   394     -
 1      1   0.75  0.017  0.11   0.99  1052     -
 2      1   3.34  0.097  0.57   1.00  1178     -
 3      1   1.50  0.035  0.26   1.00  1211     -
 4      1  20.59  0.940  0.88   1.00  1583     - 

      1.0  0.12  0.0030  0.04  0.97   2285 2.62
 0     1  1.25   0.135  0.18  0.99   2480    -
 1     1  0.03   0.001  0.04  0.97   7440    -
 2     1  0.12   0.003  0.04  0.97   8199    -
 3     1  1.10   0.092  0.16  0.99  11174    -
 4     1  0.27   0.007  0.06  0.98  11310    - 

   0.244  0.07  0.0030  0.02  0.76  41314 1.32
 0  0.181  0.64   0.028  0.03  0.36  41755    -
 1  0.161  0.18   0.008  0.01  0.45  42420    -
 2  0.161  0.18   0.008  0.01  0.45  42461    -
 3  0.237  0.25   0.011  0.02  0.56  43060    -
 4  0.267  1.03   0.047  0.07  0.46  43321    - 

 0.163  0.12  0.0060  0.01   0.5  103384 1.27
 0  0.243  0.27   0.014  0.02  0.56  104693    -
 1  0.215  0.66   0.029  0.04  0.41  105192    -
 2  0.190  0.10   0.005  0.01  0.59  105758    -
 3  0.161  0.12   0.006  0.01  0.50  109783    -
 4  0.144  0.16   0.007  0.01  0.42  110067    - 

Empty DataFrame
Columns: array([D, LOD, r2, CIlow, CIhi, Dist, T-int], dtype=object)
Index: array([], dtype=object)
4

2 に答える 2

2

df.append(dfin、ignore_index = True)は、新しいDataFrameを返しますが、dfは変更されません。df = df.append(dfin、ignore_index = True)を使用します。しかし、この変更があっても、これでは必要なものが得られないと思います。Appendはaxis=1(列)のフレームを拡張しますが、axis = 0(行)のデータを結合したいと思います

このシナリオ(複数のファイルを読み取り、すべてのデータを使用して単一のDataFrameを作成する)では、pandas.concat()を使用します。以下のコードは、colnamesで名前が付けられた列を持つフレームを提供し、行はcsvファイルのデータによって形成されます。

def files2df(colnames, ext):
    files = sorted(glob.glob(ext))
    frames = [read_csv(inf, sep='\t', skiprows=1, names=colnames) for inf in files]
    return concat(frames, ignore_index=True)

私はこのコードを試しませんでした。ここに書いただけです。実行するには微調整が必​​要かもしれませんが、アイデアは明確です(私は願っています)。

于 2012-10-03T18:52:50.570 に答える
0

また、別の解決策を見つけましたが、どちらが速いかわかりません。

def files2df(colnames, ext):
    dflist = [ ]
    for inf in sorted(glob.glob(ext)):
        dflist.append(read_csv(inf, names = colnames, sep='\t', skiprows=1))
        #print(dflist)                                                                                                                            
    df = concat(dflist, axis = 0, ignore_index=True)
    #print(df.to_string())                                                                                                                        
    return df
于 2012-10-03T19:34:40.527 に答える