1

キーと値を含むテキスト ファイルがあり、一部の値が欠落していました。

key1 12 13 na
key1 na 11 11
key1 12 13 11
key2 11 12 10
key3 10 11 10
key3 na na na

欠損値を埋めたかったので、そうしました(データは私のrddです)

def fill_na(x):
    ldf = Df(list(x))
    df_with_na = ldf #df_with_na.toPandas()
    df_with_mode = df_with_na.fillna(df_with_na.mode().iloc[0])
    return_list = df_with_mode.values.tolist()
    return return_list

data1 = data.mapValues(fill_na).flatMapValues(f)

data1 は次のようになります。

data1.collect() 

(key1 ,[12 13 11])
(key1 ,[12 11 11])
(key1 ,[12 13 11])
(key2 ,[11 12 10])
(key3 ,[10 11 10])
(key3 ,[10 11 10])

上記のdata1をデータフレーム/テーブルに書き込みたい

data1.toDF().toPandas() 

しかし、私はエラーが発生しています

TypeError: StringType can not accept object in type <type 'float'>

1)データフレームに書き込むにはどうすればよいですか? 2)以下のようにキーとリストを単一のタプルに変換するにはどうすればよいですか?

(key1 ,11,12,13)

データフレームに直接書き込むことができるようにするには?

前もって感謝します :)

4

1 に答える 1

0

DataFrames and SQL に関する Spark プログラミング ガイドから、これを試してください。

from pyspark.sql import SQLContext, Row

df = data.map(lambda (k, v): Row(k, v[0], v[1], v[2])).toDF()
于 2015-08-16T04:39:43.323 に答える