विस्फोट (विभाजन) पांडा डेटाफ़्रेम स्ट्रिंग प्रविष्टियों को अलग पंक्तियों में
पांडा में, एक सामान्य आवश्यकता अल्पविराम से अलग किए गए मानों को विभाजित करना है टेक्स्ट स्ट्रिंग कॉलम और प्रत्येक प्रविष्टि के लिए एक नई पंक्ति बनाएं। इसे विभिन्न तरीकों के माध्यम से प्राप्त किया जा सकता है। विस्फोट() और 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 resultCSV कॉलम:
df['var1'] = df['var1']। str.split(',')
एकाधिक सूची कॉलम:
df['var1'] = df['var1'].str.split(',')
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3