Я хочу найти количество строк, которые имеют определенные значения, такие как None
или ""
или NaN
(в основном пустые значения) во всех столбцах объекта DataFrame. Как я могу это сделать?
В pandas.Series
(подумайте об этом как о столбце обычного pandas.DataFrame
):
>> s = pd.Series([np.nan, np.nan, 1, 2, np.nan])
>> s
0 NaN
1 NaN
2 1.0
3 2.0
4 NaN
>> s.isnull().sum()
3
Для pandas.DataFrame
довольно похоже:
>> pd.DataFrame(np.array([[np.nan, np.nan],
...: [ 0., np.nan],
...: [ 1., 1.],
...: [ 2., 2.],
...: [np.nan, np.nan]]))
>> df
0 1
0 NaN NaN
1 0.0 NaN
2 1.0 1.0
3 2.0 2.0
4 NaN NaN
>> df.isnull().sum(axis=0)
0 2
1 3
dtype: int64
Чтобы суммировать по строке, просто поместите .sum(axis=1)
.
isnull()
eq(empty_value)
и получить результаты для обоих вместе?
s.replace("", np.nan)
или df.replace("", np.nan)
. А затем примените метод выше.
Используйте pandas dataframe.isin для создания логического массива. По строкам, затем найдите количество строк с результатом> 0.
Поместите одно или несколько значений в список search_values для поиска внутри строк фрейма.
search_values = ['', np.nan, None]
(df.isin(search_values).sum(axis=1) > 0).sum()
Если вы хотите количество строк в столбце:
df.isin(search_values).sum(axis=0)
Используйте df.isnull().sum()
чтобы получить количество строк с None
и NaN
.
Используйте df.eq(value).sum()
для любых значений, включая пустую строку ""
.
df.isnull().any();df.eq('').any()
`