2016-09-16 8 views
-1

csvファイルから既存のApacheスパークデータフレームへのデータの追加私は2つの列があり、スパークデータフレームを持って

[Row(name=u'Alice', age=2), Row(name=u'Bob', age=5)] 

データフレームを使用して作成された

sqlContext.createDataFrame() 

私が次に行う必要があるのは、外部 'csv'ファイルから3番目の列 'UserId'を追加することです。外部ファイルにはいくつかの列を持っているが、私は「ユーザーID」でのみ、最初の列を含める必要があります。

enter image description here

両方のデータソース内のレコード数が同じです。私はWindows OS上でスタンドアロンのpysparkバージョンを使用しています。最終結果は、UserId、Name、Ageの3つの列を持つ新しいデータフレームである必要があります。

提案がありますか?

答えて

1

私はこの仕事をするためにパンダを使用しました。これにより、さまざまな方法でデータフレームを結合することができます。

1)私たちは、「ユーザーIDを変換)RDD

from pyspark.sql.types import StringType 
from pyspark import SQLContext 
sqlContext = SQLContext(sc) 
userid_rdd = sc.textFile("C:……/userid.csv").map(lambda line: line.split(",")) 

2に、これはまた、インポート後に行うことができますが、私たちは、ヘッダを削除した後(それだけで余分な列をインポート)し、それを変換するために、最初に必要がありますパンダのデータフレーム内にユーザID 'データフレーム」変換)スパークデータフレーム

userid_df = userid_rdd.toDF(['userid']) 
userid_df.show() 

3にRDD'

userid_toPandas = userid_df.toPandas() 
userid_toPandas 

4)あなたが作成できる「CONCAT」

import pandas as pd 
result = pd.concat([userid_toPandas, predictions_toPandas], axis = 1, ignore_index = True) 
result 
0

2つのデータフレームを結合することでこれを行うことができますが、そのためにはIDまたは他のキーのブーステーブルが必要です。行の位置が同じであれば、Excelファイルをマージするのに十分な情報がない方が良い場合は、Excelファイルにコピーすることをお勧めします。

0

を使用して1つの新しいデータフレームに2つのパンダのデータフレームを組み合わせる)

predictions_toPandas = predictions.toPandas() 
predictions_toPandas 

5パンダのデータフレームに「予言」のデータフレーム(既存のデータフレーム)に変換csvからの新しいデータフレーム

sc = SparkContext.getOrCreate() 
    sqlContext = SQLContext(sc) 

    # Import the csv file to the SparkSQL table. 

    df = sqlContext.read.csv("abc.csv") 
    df.createOrReplaceTempView(table_a) 

    # Create a new dataframe with only the columns required. In your case only user id 
    df_1 = spark.sql("select userid from table_a") 

    #Now do a join with the existing dataframe which has the original data. ([Row(name=u'Alice', age=2), Row(name=u'Bob', age=5)]) 
    # Lets call the original alice-bob dataframe as df_ori. So, 

    df_result = df_ori.join(df_1, how=inner, on= (any column cols if there are any or index row) 
関連する問題