0

我正在尋找一種方法來選擇我的數據框在pyspark中的列。對於第一行,我知道我可以使用df.first(),但不確定列是否在沒有列名。在Pyspark Dataframe中選擇列

我有5列,並希望通過其中每一個循環。

+----------------+---+---+---+---+---+---+ 
|    _1| _2| _3| _4| _5| _6| _7| 
+----------------+---+---+---+---+---+---+ 
|1|0.0|0.0|0.0|1.0|0.0|0.0| 
|2|1.0|0.0|0.0|0.0|0.0|0.0| 
|3|0.0|0.0|1.0|0.0|0.0|0.0| 
+0

你是什麼意思「他們沒有列名」?請分享'df.show()'的輸出。 – desertnaut

+0

編輯我的帖子。我現在看到我可以做到這一點,但我仍然對循環遍歷每一列感到困惑。 – Nivi

回答

3

嘗試是這樣的:

df.select([c for c in df.columns if c in ['_2','_4','_5']]).show() 
+0

我不想硬編碼,因爲我必須爲數百個列執行此操作。所以我想通過列循環做一些分析。 – Nivi

+0

@Nivi,我已經更新了我的答案 - 是你想要的嗎? – MaxU

+0

啊!這是我長久以來一直使用的一種直接的方式。我現在只是空着。謝謝MAx :) – Nivi

2

使用df.schema.names

所有的
spark.version 
# u'2.2.0' 

df = spark.createDataFrame([("foo", 1), ("bar", 2)]) 
df.show() 
# +---+---+ 
# | _1| _2| 
# +---+---+ 
# |foo| 1| 
# |bar| 2| 
# +---+---+ 

df.schema.names 
# ['_1', '_2'] 

for i in df.schema.names: 
    # df_new = df.withColumn(i, [do-something]) 
    print i 
# _1 
# _2 
0

首先,你的架構是由錯誤從MySQL或其他數據庫導入時創建的。 你可以用字典光標來修改它

cursor = conn.cursor(MySQLdb.cursors.DictCursor) 
相關問題