簡體   English   中英

將 Pyspark RDD 轉換為 Pandas Dataframe

[英]Converting the Pyspark RDD into a Pandas Dataframe

我有一個 Pyspark RDD 如下圖 output 所示,如何將它轉換為 pandas dataframe。


rdd.take(3)

['REVISION 6 233188 AmericanSamoa 2001-01-19T01:12:51Z ip:office.bomis.com ip:office.bomis.com\nCATEGORY\nIMAGE\nMAIN\nTALK\nUSER\nUSER_TALK\nOTHER\nEXTERNAL\nTEMPLATE\nCOMMENT *\nMINOR 0\nTEXTDATA 1516',
 'REVISION 6 133180191 AmericanSamoa 2007-05-24T14:41:33Z Ngaiklin 4477979\nCATEGORY\nIMAGE\nMAIN\nTALK\nUSER\nUSER_TALK\nOTHER\nEXTERNAL\nTEMPLATE R_from_CamelCase\nCOMMENT Robot: Automated text replacement (-\\[\\[(.*?[\\:|\\|])*?(.+?)\\]\\] +\\g<2>)\nMINOR 1\nTEXTDATA 5',
 'REVISION 8 233189 AppliedEthics 2001-01-20T15:01:12Z ip:pD950754B.dip.t-dialin.net ip:pD950754B.dip.t-dialin.net\nCATEGORY\nIMAGE\nMAIN\nTALK\nUSER\nUSER_TALK\nOTHER\nEXTERNAL\nTEMPLATE\nCOMMENT *\nMINOR 1\nTEXTDATA 9']

我使用了以下代碼片段,但 output 位於單個列下。

df = rdd.map(lambda x: str(x)).map(lambda w: w.split('    ')).toDF()

Output:

+--------------------+
|                  _1|
+--------------------+
|REVISION 6 233188...|
|REVISION 6 133180...|

要將其轉換為 Pandas DataFrame,請使用toPandas()

toDF()會將 RDD 轉換為 PySpark DataFrame(最終需要轉換為 pandas)。

# Splitting by `\n`
an_rdd = rdd.map(lambda x: str(x)).map(lambda w: w.split('\n'))

# Creating columns recursively using dictionary
spark_df = an_rdd.map(lambda x: {'column_{}'.format(idx) : val 
                        for (idx, val) in enumerate(x)}).map(lambda x: Row(**x)).toDF()

# Converting to pandas
pandas_df = spark_df.toPandas()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM