"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > पांडा डेटाफ़्रेम स्ट्रिंग प्रविष्टियों को अलग-अलग पंक्तियों में कैसे विस्फोटित (विभाजित) करें?

पांडा डेटाफ़्रेम स्ट्रिंग प्रविष्टियों को अलग-अलग पंक्तियों में कैसे विस्फोटित (विभाजित) करें?

2024-12-25 को प्रकाशित
ब्राउज़ करें:917

How to Explode (Split) Pandas DataFrame String Entries into Separate Rows?

विस्फोट (विभाजन) पांडा डेटाफ़्रेम स्ट्रिंग प्रविष्टियों को अलग पंक्तियों में

पांडा में, एक सामान्य आवश्यकता अल्पविराम से अलग किए गए मानों को विभाजित करना है टेक्स्ट स्ट्रिंग कॉलम और प्रत्येक प्रविष्टि के लिए एक नई पंक्ति बनाएं। इसे विभिन्न तरीकों के माध्यम से प्राप्त किया जा सकता है। विस्फोट() और DataFrame.explode() विधियां सीएसवी-जैसे विस्फोट करने का एक सुविधाजनक तरीका प्रदान करती हैं कॉलम:

एकल कॉलम के लिए:

df.explode('column_name')

एकाधिक कॉलम के लिए:

df.explode('column_name')

जेनेरिक वेक्टरकृत फ़ंक्शन

df.explode(['column1', 'column2'])  # Pandas 1.3.0 

def विस्फोट( df, lst_cols, fill_value='', प्रिजर्व_इंडेक्स=गलत): # CSV स्ट्रिंग कॉलम को सूची कॉलम में बदलें lst_cols में col के लिए: df[col] = df[col].str.split(',') # सभी गैर-सूची कॉलम निकालें idx_cols = df.columns.difference(lst_cols) # सूची की लंबाई की गणना करें लेंस = df[lst_cols[0]].str.len() # विस्फोटित डेटाफ़्रेम बनाएं परिणाम = (pd.DataFrame({ col: np.repeat(df[col].मान, लेंस) idx_cols में col के लिए }, अनुक्रमणिका=np.repeat(df.index.values, लेंस)) .assign(**{col: np.concatatena(df.loc[lens>0, col].values) lst_cols में col के लिए})) # खाली सूची पंक्तियों को संभालें यदि (लेंस == 0).कोई(): परिणाम = परिणाम.जोड़ें(df.loc[lens==0, idx_cols], sort=False).fillna(fill_value) # यदि अनुरोध किया जाए तो इंडेक्स ऑर्डर वापस करें और इंडेक्स रीसेट करें परिणाम = परिणाम.sort_index() यदि संरक्षित_सूचकांक नहीं है: परिणाम = परिणाम.reset_index(ड्रॉप=सही) वापसी परिणाम

अनुप्रयोग

def explode(df, lst_cols, fill_value='', preserve_index=False):
    # Convert CSV string columns to list columns
    for col in lst_cols:
        df[col] = df[col].str.split(',')

    # Extract all non-list columns
    idx_cols = df.columns.difference(lst_cols)

    # Calculate list lengths
    lens = df[lst_cols[0]].str.len()

    # Create exploded DataFrame
    result = (pd.DataFrame({
        col: np.repeat(df[col].values, lens)
        for col in idx_cols
    }, index=np.repeat(df.index.values, lens))
        .assign(**{col: np.concatenate(df.loc[lens>0, col].values)
                    for col in lst_cols}))

    # Handle empty list rows
    if (lens == 0).any():
        result = result.append(df.loc[lens==0, idx_cols], sort=False).fillna(fill_value)

    # Revert index order and reset index if requested
    result = result.sort_index()
    if not preserve_index:
        result = result.reset_index(drop=True)

    return result
CSV कॉलम:

df['var1'] = df['var1']। str.split(',')

एकाधिक सूची कॉलम:

df['var1'] = df['var1'].str.split(',')
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3