पांडा डेटाफ्रेम में NaN के साथ कोई भी बदलें


98

मेरे पास तालिका है x:

        website
0   http://www.google.com/
1   http://www.yahoo.com
2   None

मैं अजगर NaN के साथ अजगर कोई नहीं बदलना चाहते हैं। मैंने कोशिश की:

x.replace(to_replace=None, value=np.nan)

लेकिन मुझे मिल गया:

TypeError: 'regex' must be a string or a compiled regular expression or a list or dict of strings or regular expressions, you passed a 'bool'

मुझे इसे किस प्रकार करना चाहिए?

जवाबों:


144

आप उपयोग कर सकते हैं DataFrame.fillnaया Series.fillnaजो पायथन ऑब्जेक्ट को प्रतिस्थापित करेगा None, न कि स्ट्रिंग 'None'

import pandas as pd
import numpy as np

डेटाफ्रेम के लिए:

df = df.fillna(value=np.nan)

स्तंभ या श्रृंखला के लिए:

df.mycol.fillna(value=np.nan, inplace=True)

3
यदि आपने SQL डेटाबेस से डेटा आयात किया है, तो आप इसे नीचे दिए गए उत्तर के साथ जोड़ सकते हैं। यह कोई नहीं (जो एक स्ट्रिंग नहीं है) NaN को धर्मान्तरित करता है। तब आप df['column'].replace(nan, "", inplace=True)कह सकते हैं कि आप चाहते थे कि कोई भी खाली स्ट्रिंग न हो।
12

1
यह जवाब मेरे लिए काम नहीं करता है; यह प्रतिस्थापित नहीं करता है None। मैक्स का जवाब काम करता है।
डेनियल

मैंने इस कॉलम-विशिष्ट समाधान को सबसे प्रभावी पाया df['website'].replace(pd.np.nan, 0, inplace=True):। इसमें नम्पी को भी शामिल करने की आवश्यकता नहीं है, पंडों के इनबिल्ट संदर्भ पर भरोसा करते हुए।
कोडमंथल

2
pd.np.nanअब देता है FutureWarning: The pandas.np module is deprecated and will be removed from pandas in a future version. Import numpy directly instead
एलेक्स पॉवेल

16

यहाँ एक और विकल्प है:

df.replace(to_replace=[None], value=np.nan, inplace=True)

3
कृपया जब आप df.replace ([कोई नहीं], np.nan, inplace = True) चलाते हैं, तो इसने सभी डेटाटाइम ऑब्जेक्ट्स को ऑब्जेक्ट dtypes में गुम डेटा के साथ बदल दिया। तो अब आपके पास प्रश्नों का टूटना हो सकता है जब तक कि आप उन्हें डेटाटाइम में वापस नहीं बदलते हैं जो आपके डेटा के आकार के आधार पर कर लगा सकते हैं।
डबलडाउन

14

निम्न पंक्ति के Noneसाथ बदलता है NaN:

df['column'].replace('None', np.nan, inplace=True)

बस इसे डबल-चेक किया, यह मेरे लिए काम करता है। क्या आपको कोई त्रुटि मिलती है या 'कोई नहीं' मानों को प्रतिस्थापित नहीं किया जाता है?
मैक्स इज़ादी

NB: इस विधि का उपयोग करता है np.nan, जिसमें एक फ्लोट dtype (जैसे:) है float64, जैसा कि objectनैन कॉलम के लिए पांडा के डिफ़ॉल्ट dtype के विपरीत है ।
तेहिंक

6
जागरूक रहें: यह "कोई नहीं" पाठ के साथ तार को प्रतिस्थापित करता है, लेकिन स्पष्ट रूप से कोई भी मान नहीं ( स्थिर रूप में कोई नहीं )।
ग्रेगोर म्यूगलगर

4

यदि आप df.replace ([कोई नहीं], np.nan, inplace = True) का उपयोग करते हैं, तो इसने सभी डेटाटाइम ऑब्जेक्ट्स को ऑब्जेक्ट dtypes में लापता डेटा के साथ बदल दिया। तो अब आपके पास प्रश्नों का टूटना हो सकता है जब तक कि आप उन्हें डेटाटाइम में वापस नहीं बदलते हैं जो आपके डेटा के आकार के आधार पर कर लगा सकते हैं।

यदि आप इस विधि का उपयोग करना चाहते हैं, तो आप पहले अपने df में ऑब्जेक्ट dtype फ़ील्ड्स की पहचान कर सकते हैं और फिर कोई नहीं बदल सकते हैं:

obj_columns = list(df.select_dtypes(include=['object']).columns.values)
df[obj_columns] = df[obj_columns].replace([None], np.nan)

0
DataFrame['Col_name'].replace("None", np.nan, inplace=True)

1
नमस्ते और स्टैकओवरफ़्लो में आपका स्वागत है, और उत्तर देने के लिए धन्यवाद। हालांकि यह कोड इस सवाल का जवाब दे सकता है, लेकिन क्या आप इस समस्या को हल करने के लिए कुछ स्पष्टीकरण जोड़ सकते हैं, और आपने इसे कैसे हल किया? इससे भविष्य के पाठकों को आपके उत्तर को बेहतर ढंग से समझने और उससे सीखने में मदद मिलेगी।
प्लूटियन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.