これらのエラーは、pd.read_csv
コールがこの場合はDataFrame
オブジェクトを返さないという事実に起因しています。代わりにオブジェクトを返します。このオブジェクトはiterator
です。これは、基本的に、パラメータをTrue
に設定した場合、返されるのはDataFrame
ではないためです。 chunksize
パラメータ(この場合は1000000
)に渡される整数の各データフレームオブジェクトのiterator
です。 具体的にはdf.index
を呼び出すことはできません。単にiterator
オブジェクトにindex
という属性がないためです。これは、iterator
内のDataFrames
にアクセスできないという意味ではありません。つまり、一度にDataFrame
にアクセスするためにイテレータをループするか、またはそれらのすべてを1つの巨大なものに連結する何らかの方法を使用する必要があります。
あなただけ一度に一つのDataFrame
で作業を検討している場合は、次はあなたが各DataFrame
のインデックスを印刷するために必要となるものです。
file = "./data.csv"
dfs = pd.read_csv(file, sep="/", header=0,iterator=True, chunksize=1000000, dtype=str)
for df in dfs:
print(df.index)
# do something
df.to_csv('output_file.csv', mode='a', index=False)
この出力にDataFrames
を保存しますファイル名はoutput_file.csv
です。 mode
パラメータをa
に設定すると、操作がファイルに追加されます。その結果、上書きする必要はありません。あなたはすでにここiterator
パラメータを使用しているので、私は、
file = "./data.csv"
dfs = pd.read_csv(file, sep="/", header=0,iterator=True, chunksize=1000000, dtype=str)
giant_df = pd.concat(dfs)
print(giant_df.index)
:あなたの目標は、1つの巨大なDataFrame
にすべてのデータフレームを連結する場合
しかし、その後、次はおそらく、より適切なパスになりますあなたは記憶を心配していると思います。このように、最初の戦略はより良いものになるでしょう。基本的には、大きなデータセットのメモリ管理に関して、iterators
が提供する利点を利用していることを意味します。
私はこれが有用であることを望みます。
上記のコードがこれらのエラーを投げる方法はありません。完全なコードとトレースバックを共有してください。また、 'iterator'パラメータを' True'に設定すると、返されるのはデータフレームではありません。これは 'chunksize'パラメータに渡される整数のデータフレームのイテレータです。基本的に、複数のデータフレームにアクセスするには、 'df'変数をループする必要があります。 – Abdou
詳しい説明ができますか? –
さらにコードと完全なトレースバック/エラーを共有していただければ幸いです。要点は、変数 'df'はデータフレームではないということです。データフレームの[iterator'](http://pandas.pydata.org/pandas-docs/stable/io.html#io-chunking)です。 'iterator'をループすることで、データフレームにアクセスすることができます。例えば、 – Abdou