जवाबों:
अद्यतन: पंडों का उपयोग 0.22.0
नए पंडों संस्करणों में नए तरीके 'DataFrame.isna ()' और 'DataFrame.notna ()' हैं।
In [71]: df
Out[71]:
a b c
0 NaN 7.0 0
1 0.0 NaN 4
2 2.0 NaN 4
3 1.0 7.0 0
4 1.0 3.0 9
5 7.0 4.0 9
6 2.0 6.0 9
7 9.0 6.0 4
8 3.0 0.0 9
9 9.0 0.0 1
In [72]: df.isna().any()
Out[72]:
a True
b True
c False
dtype: bool
स्तंभों की सूची के रूप में:
In [74]: df.columns[df.isna().any()].tolist()
Out[74]: ['a', 'b']
उन स्तंभों को चुनने के लिए (जिनमें कम से कम एक NaN
मान होता है):
In [73]: df.loc[:, df.isna().any()]
Out[73]:
a b
0 NaN 7.0
1 0.0 NaN
2 2.0 NaN
3 1.0 7.0
4 1.0 3.0
5 7.0 4.0
6 2.0 6.0
7 9.0 6.0
8 3.0 0.0
9 9.0 0.0
OLD उत्तर:
Isnull () का उपयोग करने का प्रयास करें :
In [97]: df
Out[97]:
a b c
0 NaN 7.0 0
1 0.0 NaN 4
2 2.0 NaN 4
3 1.0 7.0 0
4 1.0 3.0 9
5 7.0 4.0 9
6 2.0 6.0 9
7 9.0 6.0 4
8 3.0 0.0 9
9 9.0 0.0 1
In [98]: pd.isnull(df).sum() > 0
Out[98]:
a True
b True
c False
dtype: bool
या @root प्रस्तावित क्लीयर संस्करण के रूप में:
In [5]: df.isnull().any()
Out[5]:
a True
b True
c False
dtype: bool
In [7]: df.columns[df.isnull().any()].tolist()
Out[7]: ['a', 'b']
एक सबसेट का चयन करने के लिए - कम से कम एक NaN
मूल्य वाले सभी कॉलम :
In [31]: df.loc[:, df.isnull().any()]
Out[31]:
a b
0 NaN 7.0
1 0.0 NaN
2 2.0 NaN
3 1.0 7.0
4 1.0 3.0
5 7.0 4.0
6 2.0 6.0
7 9.0 6.0
8 3.0 0.0
9 9.0 0.0
df.columns[df.isin['xxx'].any()].tolist()
df.columns[df.eq(search_for_value).any()].tolist()
isna
, notna
?
बड़ी संख्या में कॉलम रखने वाले डेटासेट में यह देखने के लिए बेहतर है कि कितने कॉलम में शून्य मान हैं और कितने नहीं हैं।
print("No. of columns containing null values")
print(len(df.columns[df.isna().any()]))
print("No. of columns not containing null values")
print(len(df.columns[df.notna().all()]))
print("Total no. of columns in the dataframe")
print(len(df.columns))
मेरे डेटाफ्रेम में उदाहरण के लिए इसमें 82 कॉलम थे, जिनमें से 19 में कम से कम एक शून्य मान था।
इसके अलावा, आप स्वतः ही उन कॉल और पंक्तियों को हटा सकते हैं जिनके आधार पर अधिक शून्य मान हैं।
यह वह कोड है जो यह समझदारी से करता है:
df = df.drop(df.columns[df.isna().sum()>len(df.columns)],axis = 1)
df = df.dropna(axis = 0).reset_index(drop=True)
नोट: उपरोक्त कोड आपके सभी अशक्त मूल्यों को हटा देता है। यदि आप शून्य मान चाहते हैं, तो उन्हें पहले संसाधित करें।
इसने मेरे लिए काम किया,
1. कम से कम 1 शून्य मान वाले कॉलम प्राप्त करने के लिए। (कॉलम नाम)
data.columns[data.isnull().any()]
2. गणना के साथ कॉलम प्राप्त करने के लिए, कम से कम 1 शून्य मान के साथ।
data[data.columns[data.isnull().any()]].isnull().sum()
[वैकल्पिक] 3. शून्य संख्या का प्रतिशत प्राप्त करने के लिए।
data[data.columns[data.isnull().any()]].isnull().sum() * 100 / data.shape[0]
df.isna().any()[lambda x: x]
मेरे लिए काम करता है