我是pyspark数据帧的新手,并希望确保自己没有犯一个愚蠢的错误(我已经因为使用.union
而不是.unionByName
而感到筋疲力尽,所以我不想重复相似!)
是否可以使用方括号对pyspark数据框列进行重新排序和子集化?通过四处查看,似乎可以使用双方括号的pandas-esque方法对pyspark数据框中的列进行子集和重新排序。例如:
# Create pandas dataframe to convert to pyspark dataframe
singers = {'ID': {0: 1, 1: 2, 2: 3, 3: 4, 4: 5},
'Name': {0: 'Maria Callas', 1: 'Tito Gobbi', 2: 'Giuseppe Di Stefano', 3: 'Rolando Panerai', 4: 'Luigi Alva'},
'Fach': {0: 'Soprano', 1: 'Baritone', 2: 'Tenor', 3: 'Baritone', 4: 'Tenor'},
'Place of Birth': {0: 'USA', 1: 'Italy', 2: 'Italy', 3: 'Italy', 4: 'Peru'}}
singers_pd = pd.DataFrame(singers, columns=singers.keys())
# Create pyspark dataframe
singers_sparkDF = spark.createDataFrame(singers_pd)
# Subsetting using [[]] seems to work!
singers_sparkDF[['Fach', 'Place of Birth']].show()
# Reordering using [[]] seems to work!
singers_sparkDF[['ID', 'Name', 'Fach', 'Place of Birth']].show()
在这个不是一个好主意的地方,我是否缺少某些东西,应该使用.select
或其他方法进行子集和重新排序?