2016-09-29 16 views
6

में कैसे नाम बदलने के लिए स्तंभ नाम विन्यास स्तंभ नाम के साथ जैसेचिंगारी एसक्यूएल

Journey channelA channelB channelC 
j1  1  0  0 
j1  0  1  0 
j1  1  0  0 
j2  0  0  1 
j2  0  1  0 

विन्यास तक मैं वहाँ dataframe में चैनल हो सकता है 'एन' अर्थ है कि मेरे dataframe है।

अब मैं एक परिवर्तन जिसमें मैं की तरह

df.groupBy("Journey").agg(sum("channelA"), sum("channelB"), sum("channelC")) 

सभी चैनलों कुछ का योग खोजने की जरूरत की जरूरत है, जिनमें से उत्पादन होगा:

Journey sum(channelA) sum(channelB) sum(channelC) 
j1  2    1    0 
j2  0    1    1 

अब मैं नाम बदलना चाहते हैं कॉलम नाम मूल नामों के लिए और मैं

.withColumnRenamed("sum(channelA)", channelA) 

के साथ ऐसा कर सकता था लेकिन जैसा कि मैंने चैनल का उल्लेख किया सूची विन्यास योग्य है और मैं एक सामान्य स्तंभ नाम बदलने बयान एक उम्मीद dataframe के रूप में प्राप्त करने के लिए मूल स्तंभ नाम करने के लिए अपने सभी अभिव्यक्त कॉलम का नाम बदलना चाहते हैं:

Journey channelA channelB channelC 
j1  2  1    0 
j2  0  1    1 

कोई सुझाव इस

उत्तर

15

दृष्टिकोण कैसे dinamically नाम बदलने के लिए आपके डेटाफ्रेम के कॉलम आप विधि टूडीएफ (scala.collection.Seq colNames) का उपयोग कर सकते हैं, जिसमें आप मूल कॉलम नामों के साथ colNames को पॉप्युलेट कर सकते हैं।

तो तुम dinamically इस तरह एक दृश्य को पॉप्युलेट कर सकते हैं:

val columnsRenamed = Seq("Journey", "channelA", "channelB","channelC") 

और फिर विधि toDF फोन:

df = df.toDF(columnsRenamed: _*) 

: _* ऑपरेटर के कारण String* के रूप Seq[String] कास्ट करने के लिए है।

0

इसे निम्नलिखित तरीकों से भी बदला जा सकता है, इनपुट डीएफ फॉर्म इनपुट इनपुट का कहना है डीएफ: कॉलम _1, _2 के साथ डेटाफ्रेम।

val newDf = inputDf.selectExpr("_1 as x1", "_2 as X2") 
* as -> maps to alias 

अन्य विस्तृत जवाब यहां पाया जा सकता है: Renaming Column names of a Data frame in spark scala

संबंधित मुद्दे