पांडस डेटाफ्रेम में अन्य स्तंभों के आधार पर लापता मूल्य कैसे भरें?


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

आप ऐसा नहीं कर सकते क्योंकि आकार बराबर नहीं होगा
मयूर डंगर

क्या आप अपने उत्तर का विस्तार कर सकते हैं? यह क्यों संभव नहीं है और वह संभवतः समस्या को हल करने के लिए क्या कर सकता है?
डेमियन मेलनिकज़ुक

हे, मैं भी एक ही सवाल है लेकिन क्या होगा अगर मैं डेटा से निपटने के लिए शाब्दिक है? यह स्थिति "जैसी है अगर" अवयवों 'में चिकन है तो' टाइप '= नॉन-वेज "
user7389747

जवाबों:


17

मान लें कि आपके डेटाफ़्रेम के तीन कॉलम हैं 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

यह मानते हुए कि आपके डेटाफ्रेम में तीन कॉलम हैं 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)
वैलेंटाइन्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.