আমি 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)]
এটা চরমভাবে হ্যাকি, তাই না? আমি ধরে নিলাম এটি করার আরও একটি বৈধ উপায় আছে?