random.intメソッドを使用して2列のpandas dfを作成し、groupby操作を適用する2番目の2列のデータフレームを生成しました。 df.col1は一連のリストであり、df.col2は一連の整数であり、リスト内の要素はタイプ 'numpy.int64'であり、2番目の列の要素はrandom.intの結果と同じです。私は、クレタ島にspark.createDataFrame(DF)とpyspark.sqlのデータフレームをしようとするとNumpy値を持つpandasデータフレームをpysparkSQL.DataFrameに変換する
df.a df.b
3 7
5 2
1 8
...
groupby operations
df.col1 df.col2
[1,2,3...] 1
[2,5,6...] 2
[6,4,....] 3
...
、私はこのエラーを取得する: TypeError例外:サポートされていないタイプ:型 'numpy.int64'。バックDFの世代へ行く
は、私はPythonのintにnumpy.int64から要素を変換するためのさまざまな方法を試してみましたが、テーマのどれも働いた:
np_list = np.random.randint(0,2500, size = (10000,2)).astype(IntegerType)
df = pd.DataFrame(np_list,columns = list('ab'), dtype = 'int')
私もラムダのxとマッピングしてみました:int型(x)またはx.item()でも型は 'numpy.int64'のままです。
pyspark.sqlのドキュメントによると、pandasデータフレームを読み込むことは可能ですが、numpy値が付いている場合は互換性がないようです。 ヒント?
ありがとうございます!
ありがとう@DatTran、それは動作します。しかし私が変換したいdfは、最初のもの(魔法使いの列co1とcol2とリスト)で、2番目のものではありません。そのため、他のデータフレームで 'numpy.int64'から 'python int'への変換を強制しようとしました。 – csbr
私が言ったように、これは不可能です!それ以外の場合は 'string'としてキャストする必要があります。 –
ここにもう一度@csbr ...これらの回答を受け入れる必要があります。 – eliasah