পান্ডাস ডেটাফ্রেমে অন্যান্য কলামের ভিত্তিতে অনুপস্থিত মানটি কীভাবে পূরণ করবেন?


19

ধরুন আমার কাছে একটি 5 * 3 ডেটা ফ্রেম রয়েছে যার মধ্যে তৃতীয় কলামে মান অনুপস্থিত

1 2 3
4 5 NaN
7 8 9
3 2 NaN
5 6 NaN

আমি অনুপস্থিত মান ভিত্তিক নিয়মের যে মানটি প্রথম উত্পাদন দ্বিতীয় কলামের জন্য উত্পন্ন আশা করি

1 2 3
4 5 20 <--4*5
7 8 9
3 2 6 <-- 3*2
5 6 30 <-- 5*6

আমি কীভাবে এটি ডেটা ফ্রেম ব্যবহার করতে পারি? ধন্যবাদ।

এই জাতীয় অনুপস্থিত মান গণনা করতে কীভাবে শর্ত যুক্ত করতে হয়?

if 1st % 2 == 0 then 3rd = 1st * 2nd else 3rd = 1st + 2nd

1 2 3
4 5 20 <-- 4*5 because 4%2==0
7 8 9
3 2 5 <-- 3+2 because 3%2==1
5 6 11 <-- 5+6 because 5%2==1

আপনি এটি করতে পারবেন না কারণ আকারটি সমান হবে না
ময়ূর ডাঙ্গার

আপনি আপনার উত্তর প্রসারিত করতে পারেন? কেন এটি সম্ভব নয় এবং সমস্যা সমাধানের জন্য তিনি কী করতে পারেন?
দামিয়ান মেলনিকজুক

আরে এমনকি আমারও একই প্রশ্ন আছে। তবে আমি যদি ডেটা ব্যবহার করি তা পাঠ্যগত হয় কি? শর্তটি এর মতো "যদি 'উপাদানগুলিতে মুরগি থাকে তবে' টাইপ '= নন-
ভেজিট

উত্তর:


17

আপনার dataframe তিন কলাম ধরে নেওয়া যাক করা হয় a, bএবং c। এটাই তুমি চাও:

df['c'] = df.apply(
    lambda row: row['a']*row['b'] if np.isnan(row['c']) else row['c'],
    axis=1
)

সম্পূর্ণ কোড:

df = pd.DataFrame(
    np.array([[1, 2, 3], [4, 5, np.nan], [7, 8, 9], [3, 2, np.nan], [5, 6, np.nan]]), 
    columns=['a', 'b', 'c']
)
df['c'] = df.apply(
    lambda row: row['a']*row['b'] if np.isnan(row['c']) else row['c'],
    axis=1
)

কয়েক বছর দেরি হলেও এটি কেবল তখনই কাজ করে যখন কলামগুলি সংখ্যাসূচক হবে। np.isnanঅ-সংখ্যাযুক্ত ডেটা সমর্থন করে না। এটি এখানে কোনও সমস্যা নয় কারণ ওপিতে সংখ্যার কলাম এবং গাণিতিক ক্রিয়াকলাপ ছিল তবে অন্যথায় pd.isnullএটি একটি ভাল বিকল্প।
আদর্শ চাওয়াকুলা


3

fillna()ডেটাফ্রেমের পদ্ধতিটি ব্যবহার সম্পর্কে কী ?

df['C'].fillna(df.A * df.B)


2

বলা যাচ্ছে যে আপনার dataframe তিনটি কলাম হয় a, bএবং c। তারপরে আপনি প্রয়োজনীয় অপারেশনটি এভাবে করতে পারেন:

values = df['a'] * df['b']
df['c'] = values.where(df['c'] == np.nan, others=df['c'])

1
বাnp.where(pd.isnull(df.c), df.a * df.b, df.c)
ভ্যালেন্টাস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.