একটি পাইপার্ড ডাটাফ্রেমে সমস্ত সংখ্যাসূচক মানকে একটি ধ্রুবক মান দ্বারা প্রতিস্থাপন করুন


12

'নাল' উপাদান এবং সংখ্যাসূচক উপাদান সমন্বিত একটি পাইপর্ক ডেটা ফ্রেম বিবেচনা করুন। সাধারণভাবে, সংখ্যার উপাদানগুলির বিভিন্ন মান থাকে। ধ্রুবক সংখ্যাসূচক মান দ্বারা উদাহরণস্বরূপ ডাটাফ্রেমের সমস্ত সংখ্যাসূচক মানগুলি কীভাবে প্রতিস্থাপন করা সম্ভব (উদাহরণস্বরূপ মান 1 দিয়ে)? আগাম ধন্যবাদ!

পাইস্পার্ক ডেটাফ্রেমের উদাহরণ:

c1c2c310.0411.3521null1.23null1.2null

ফলাফলটি হওয়া উচিত:

c1c2c3111121null13null1null

তাই আপনাকে স্বাগতম! আপনি কি কিছু ডেটা এবং / অথবা কোড উদাহরণ পোস্ট করতে পারেন যাতে আমরা আপনাকে আরও ভালভাবে সহায়তা করতে পারি?
স্টিরিও

উত্তর:


8

ব্যবহারটি litকলামের সমস্ত মানকে প্রদত্ত মানকে রূপান্তর করবে।

এটি কেবল ডেটাফ্রেমের নন-নাল মানগুলির জন্য করতে আপনাকে প্রতিটি কলামের নন-নাল মানগুলি ফিল্টার করতে হবে এবং আপনার মানটি প্রতিস্থাপন করতে হবে। whenআপনাকে এটি অর্জনে সহায়তা করতে পারে।

from pyspark.sql.functions import when   

df.withColumn('c1', when(df.c1.isNotNull(), 1))
  .withColumn('c2', when(df.c2.isNotNull(), 1))
  .withColumn('c3', when(df.c3.isNotNull(), 1))

এর ফলস্বরূপ:

c1c2c3111121null13null1null

এছাড়াও, আপনি যদি এই নাল মানগুলি অন্য কোনও মানের সাথেও প্রতিস্থাপন করতে চান তবে আপনি এর otherwiseসাথে সংমিশ্রণে ব্যবহার করতে পারেন when। বলুন যে আপনি 0সেখানে গালি দিতে চান :

from pyspark.sql.functions import when   

df.withColumn('c1', when(df.c1.isNotNull(), 1).otherwise(0))
  .withColumn('c2', when(df.c2.isNotNull(), 1).otherwise(0))
  .withColumn('c3', when(df.c3.isNotNull(), 1).otherwise(0))

এর ফলস্বরূপ:

c1c2c3111121013010

7

আপনার সমস্যা হিসাবে, আমি মনে করি এটি লিট ব্যবহার করা সহজ হতে পারে । এটা চেষ্টা কর-

from pyspark.sql.functions import lit
new_df = df.withColumn('column_name', lit(1))

আশা করি এটা সাহায্য করবে!


2

আপনার যদি একাধিক কলাম থাকে তবে এটি আরও সহজ হবে:

from pyspark.sql.functions import when   
cols = df.columns # list of all columns
for col in cols:
    df= df.withColumn(col, when(df[col]>0,1).otherwise(0))
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.