मैं DataFrame
कुछ मनमाने मूल्य (जो प्रत्येक पंक्ति के लिए समान है) के साथ एक कॉलम जोड़ना चाहता हूं । जब मैं withColumn
निम्नानुसार एक त्रुटि प्राप्त करता हूं :
dt.withColumn('new_column', 10).head(5)
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-50-a6d0257ca2be> in <module>()
1 dt = (messages
2 .select(messages.fromuserid, messages.messagetype, floor(messages.datetime/(1000*60*5)).alias("dt")))
----> 3 dt.withColumn('new_column', 10).head(5)
/Users/evanzamir/spark-1.4.1/python/pyspark/sql/dataframe.pyc in withColumn(self, colName, col)
1166 [Row(age=2, name=u'Alice', age2=4), Row(age=5, name=u'Bob', age2=7)]
1167 """
-> 1168 return self.select('*', col.alias(colName))
1169
1170 @ignore_unicode_prefix
AttributeError: 'int' object has no attribute 'alias'
ऐसा लगता है कि मैं फ़ंक्शन को अन्य कॉलमों में से एक को जोड़कर और घटाकर काम करने में ट्रिक कर सकता हूं (इसलिए वे शून्य में जोड़ते हैं) और फिर मुझे इच्छित संख्या जोड़ना (इस मामले में 10):
dt.withColumn('new_column', dt.messagetype - dt.messagetype + 10).head(5)
[Row(fromuserid=425, messagetype=1, dt=4809600.0, new_column=10),
Row(fromuserid=47019141, messagetype=1, dt=4809600.0, new_column=10),
Row(fromuserid=49746356, messagetype=1, dt=4809600.0, new_column=10),
Row(fromuserid=93506471, messagetype=1, dt=4809600.0, new_column=10),
Row(fromuserid=80488242, messagetype=1, dt=4809600.0, new_column=10)]
यह सर्वोच्च हैक है, है ना? मुझे लगता है कि ऐसा करने का एक अधिक कानूनी तरीका है?