pandas.DataFrame
に格納されたデータを、各列が別のデータ型(整数または浮動小数点)を持つことができるバイト文字列に変換する必要があります。ここでは、データの簡単なセットされていますpandas.DataFrameをバイトに変換する
df = pd.DataFrame([ 10, 15, 20], dtype='u1', columns=['a'])
df['b'] = np.array([np.iinfo('u8').max, 230498234019, 32094812309], dtype='u8')
df['c'] = np.array([1.324e10, 3.14159, 234.1341], dtype='f8')
とDFがこのようなものになります。
a b c
0 10 18446744073709551615 1.324000e+10
1 15 230498234019 3.141590e+00
2 20 32094812309 2.341341e+02
をDataFrame
ので、私はこのような何かをしたいのですが、各列df.dtypes
の種類を知っています:
data_to_pack = [tuple(record) for _, record in df.iterrows()]
data_array = np.array(data_to_pack, dtype=zip(df.columns, df.dtypes))
data_bytes = data_array.tostring()
これは、典型的に起因df['b'][0]
に格納されている最大値(この場合は正常に動作しなく。の配列を変換し、上記第二の行を単一のデータタイプ(float64
デフォルト)とSeries
としてレコードを抽出する最初の行に
OverflowError: Python int too large to convert to C long
エラー結果(私は信じる):タイプの所与のセットでnp.array
にタプル次のエラーが発生最大uint64
値のfloat64
で選択された表現は、uint64
に直接変換することはできません。
1)DataFrame
はすでに各列の型が分かっているので、型付きのnumpy.array
コンストラクタに入力するためのタプルの行を作成する方法がありますか?あるいは、このような変換で型情報を保持するために、上に概説したよりも良い方法がありますか?
2)DataFrame
から、各列の型情報を使用してデータを表すバイト文字列に直接移動する方法がありますか。