我有一個dataframe像下麵。我想把第一行作為這dataframe列。我怎麼能這樣做。有什麼方法可以直接轉換它。(沒有使用df.first)
usdata.show () - - - - - - + - - - + - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - + | _1 | _2 | _3 | _4 | _5 - - - - - - - - - - - | + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - + | first_name | last_name | company_name |地址|城市| |詹姆斯|對接| | 6649年“本頓,小約翰·B”N藍桉聖新奧爾良| | |約瑟芬| Darakjy |“Chanay, Jeffrey…布萊頓| | 4 B藍嶺大馬路| | |藝術Venere |“Chemel,詹姆斯L…|8 W Cerritos Ave #54| Bridgeport| | Lenna| Paprocki|Feltz Printing Se...| 639 Main St| Anchorage| +----------+---------+--------------------+--------------------+-------------+
這不是從文件讀取的數據。我有一個dataframe像上麵。我隻需要秘密第一行作為dataframe列。這是它。
我的觀點是,你要求列名認為“第一行”,我告訴你,在規模,或者如果數據量增長你認為“第一行”可能不再是“第一行”,除非數據排序,“第一行”不是一個有意義的術語。
我的觀點是,火花是或可能是一個分布式的過程,如果這數據分割成兩片,在這一點上是“第一排”的意義
也就是說,對於小數據,單一來源,它通常是。
這是一些需要選擇一行的代碼,我們可以稱之為“第一行”如果你想要的。需要單列,構建一個列名列表。
然後需要從原始dataframe模式(列名),和重寫它使用值“第一行”。
然後創建一個新的dataframe,下降從舊的抽樣方法。
這段代碼工作,但是你已經警告說,在某種程度上這數據讀取一個文件,指定適當的設置讀取該文件是一種更安全的方法。
如果你不能,那麼也許一個過濾器限製之前確保你得到你期望的行。
我把所有的python代碼到一個細胞,因為這個應用程序的多個代碼塊。
# # # # #忽視這一切,直到你看到#關注#這是內部的東西給你們看一個工作示例#我構建一個dataframe這裏,你已經有一個dataframe # # # # # #從pyspark.sql為測試用例設置模式。類型進口ArrayType、StructField StructType、StringType IntegerType模式= StructType ([StructField (c1, StringType(),真的),StructField (c2, StringType(),真的)])#創建一些數據測試用例數據= [(“ID”、“名稱”)(“5”,“喬”)(“6”,“瑪麗”)]抽樣= spark.sparkContext.parallelize(數據,1)df = spark.createDataFrame(抽樣、模式)#你現在有一個類似於dataframe問題# + - - - + - - - + # | c1 | c2 | # + - - - + - - - + # | | ID名稱| # | 5 |喬瑪麗| # | 6 | | # + - - - + - - - + # # # # # # #注意從這裏到最後#你可以抓住下麵這個代碼和重命名你的dataframe df # df = <你df > #並運行下麵的代碼# # # # # # #的模式,或列名DFSchema = df。模式#構建一個“第一”的列名列表行list_of_new_column_names =[]我df.limit (1) .collect () [0]: list_of_new_column_names.append (i) #您現在有#的列名列表迭代生成的“第一”行#的值變化模式為我新值,k列舉(DFSchema.fields): k.name = list_of_new_column_names[我]# DFSChema現在看起來像這樣# StructType(列表(StructField (ID、StringType真實),StructField(名稱、StringType真實)))#模式適用於原始dataframe new_df = spark.createDataFrame (df。抽樣,DFSchema) new_df.show ()