में कोई भी/शून्य मानों के साथ रिक्त तारों को बदलें, मेरे पास null
और उसी कॉलम में खाली तारों के मिश्रण के साथ Spark 1.5.0 DataFrame है। मैं सभी कॉलम में सभी खाली तारों को null
(None
, पायथन में) रूपांतरित करना चाहता हूं। डेटाफ्रेम में सैकड़ों कॉलम हो सकते हैं, इसलिए मैं प्रत्येक कॉलम के हार्ड-कोडेड मैनिप्लेशंस से बचने की कोशिश कर रहा हूं।डेटाफ्रेम
नीचे अपना प्रयास देखें, जिसके परिणामस्वरूप त्रुटि हुई है।
from pyspark.sql import SQLContext
sqlContext = SQLContext(sc)
## Create a test DataFrame
testDF = sqlContext.createDataFrame([Row(col1='foo', col2=1), Row(col1='', col2=2), Row(col1=None, col2='')])
testDF.show()
## +----+----+
## |col1|col2|
## +----+----+
## | foo| 1|
## | | 2|
## |null|null|
## +----+----+
## Try to replace an empty string with None/null
testDF.replace('', None).show()
## ValueError: value should be a float, int, long, string, list, or tuple
## A string value of null (obviously) doesn't work...
testDF.replace('', 'null').na.drop(subset='col1').show()
## +----+----+
## |col1|col2|
## +----+----+
## | foo| 1|
## |null| 2|
## +----+----+
@palsch, नहीं, यह एक सूची नहीं लौटाता है। यह एक डेटाफ्रेम देता है। मैंने स्पार्क दस्तावेज के लिंक के साथ सवाल अपडेट किया। – dnlbrky
@palsch यह एक सामान्य पायथन सवाल नहीं है! स्पार्क डेटाफ्रेम आमतौर पर बड़े डेटा पर भारी डेटा विश्लेषण की अनुमति देने के लिए उपयोग की जाने वाली डेटा संरचना वितरित की जाती है। तो आप समाधान फिट नहीं हैं। – eliasah
@eliasah सत्य को पाइथोनिक 'लैम्ब्डा एक्स कहा जाना चाहिए: यदि कोई नहीं है तो' udf' के साथ लपेटा गया एक्स और एक्स 'ठीक नहीं होगा :) – zero323