2016-06-23 11 views
9

स्पार्क डेटाफ्रेम में पंक्ति ऑब्जेक्ट से मूल्य कैसे प्राप्त करें?

averageCount = (wordCountsDF 
       .groupBy().mean()).head() 

के लिए मैं

Row(avg(count)=1.6666666666666667)

मिल लेकिन जब मैं कोशिश:

averageCount = (wordCountsDF 
       .groupBy().mean()).head().getFloat(0) 

मैं निम्नलिखित त्रुटि मिलती है:

AttributeError: getFloat --------------------------------------------------------------------------- AttributeError Traceback (most recent call last) in() 1 # TODO: Replace with appropriate code ----> 2 averageCount = (wordCountsDF 3 .groupBy().mean()).head().getFloat(0) 4 5 print averageCount

/databricks/spark/python/pyspark/sql/types.py in getattr(self, item) 1270 raise AttributeError(item) 1271
except ValueError: -> 1272 raise AttributeError(item) 1273 1274 def setattr(self, key, value):

AttributeError: getFloat

क्या मैं गलत कर रहा हूँ?

उत्तर

18

मैंने इसे समझ लिया। यह मैं मान प्रदान करेंगे:

averageCount = (wordCountsDF 
       .groupBy().mean()).head()[0] 
1

Dataframe पंक्तियों namedtuples से लिए गए हैं (संग्रह पुस्तकालय से) है, तो आप एक पारंपरिक टपल तरह सूचकांक उन्हें रास्ते आपने ऊपर किया जा सकता है, तो आप शायद द्वारा यह उपयोग करना चाहते अपने खेतों का नाम यही कारण है कि, नामित tuples का बिंदु, और यह भविष्य के परिवर्तनों के लिए भी अधिक मजबूत है। इस तरह:

averageCount = wordCountsDF.groupBy().mean().head()['avg(jobs)'] 
7

यह भी काम करता है:

averageCount = (wordCountsDF 
       .groupBy().mean('count').collect())[0][0] 
print averageCount 
संबंधित मुद्दे