ডেটাফ্রেম গ্রুপটি স্পার্ক করুন এবং অবতরণ ক্রমে সাজান (পাইপর্ক)


90

আমি পাইস্পার্ক (পাইথন ২.7.৯ / স্পার্ক ১.৩.১) ব্যবহার করছি এবং একটি ডেটা ফ্রেম গ্রুপঅবজেক্ট রয়েছে যা আমাকে ফিল্ডিং এবং সাজানোর ক্রম অনুসারে বাছাই করতে হবে। কোডের এই অংশের মাধ্যমে এটি অর্জনের চেষ্টা করা হচ্ছে।

group_by_dataframe.count().filter("`count` >= 10").sort('count', ascending=False)

তবে এটি নিম্নলিখিত ত্রুটি ছুড়ে ফেলে।

sort() got an unexpected keyword argument 'ascending'

উত্তর:


173

পাইস্পার্কে 1.3 sortপদ্ধতিতে আরোহণের প্যারামিটার লাগে না। descপরিবর্তে আপনি পদ্ধতিটি ব্যবহার করতে পারেন :

from pyspark.sql.functions import col

(group_by_dataframe
    .count()
    .filter("`count` >= 10")
    .sort(col("count").desc()))

বা descফাংশন:

from pyspark.sql.functions import desc

(group_by_dataframe
    .count()
    .filter("`count` >= 10")
    .sort(desc("count"))

উভয় পদ্ধতি স্পার্ক> = 1.3 (স্পার্ক 2.x সহ) সহ ব্যবহার করা যেতে পারে।



25

এখন পর্যন্ত সবচেয়ে সুবিধাজনক উপায় এটি ব্যবহার করছে:

df.orderBy(df.column_name.desc())

বিশেষ আমদানির প্রয়োজন হয় না।


4
ডেটাব্রিক্সের সলিউশন আর্কিটেক্ট ড্যানিয়েল হাভিভকে কৃতিত্ব যিনি আমাকে এইভাবে দেখিয়েছিলেন।
— gdoron মনিকা

4
এখন পর্যন্ত এখানে সেরা উত্তর।
— জন্ম_প্রেম

পরিবর্তে এটি গ্রহণযোগ্য উত্তর হওয়া উচিত। অনেক সরল এবং প্যাকেজগুলির উপর নির্ভর করে না (সম্ভবত সেই সময়ে উপলভ্য ছিল না)
— বেনামে

আমি এই উত্তরটি সত্যিই পছন্দ করি তবে আমার পক্ষে স্পার্ক 3.0.০.০ সহ গণনা করা হয়নি। আমি মনে করি কারণ একটি সংখ্যার চেয়ে গণনা একটি ফাংশন। প্রকারের ত্রুটি: অবৈধ আর্গুমেন্ট, কোনও স্ট্রিং বা কলাম নয়: <বাউন্ড পদ্ধতি ডেটা ফ্রেমের ডেটা ফ্রেমকাউন্ট [...]> <ক্লাস 'পদ্ধতি'> টাইপের। কলামের আক্ষরিক জন্য, 'লিট', 'অ্যারে', 'স্ট্রাক্ট' বা 'ক্রিয়ে_ম্যাপ' ফাংশনটি ব্যবহার করুন।
— আরমান্ডো

5

পাইপর্ক 2.4.4 এ

1) group_by_dataframe.count().filter("`count` >= 10").orderBy('count', ascending=False)

2) from pyspark.sql.functions import desc
   group_by_dataframe.count().filter("`count` >= 10").orderBy('count').sort(desc('count'))

1) এবং 1) এ আমদানি করার দরকার নেই সংক্ষিপ্ত এবং পড়া সহজ,
সুতরাং আমি 1) 2 এর চেয়ে বেশি পছন্দ করি)


4

আপনি নিচে গ্রুপবাই এবং অর্ডারবাই ব্যবহার করতে পারেন

dataFrameWay = df.groupBy("firstName").count().withColumnRenamed("count","distinct_name").sort(desc("count"))
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.