我有一个Dataframe,其中大多数列具有10866个非空值,除了几个较少的列。非空值最少的列是“关键字”(9373)。因此,当我从Dataframe中删除NA值时,我希望每列的非空值数量等于该列中具有非空值最少的非空值数量;在这种情况下为“关键字”。
但是,当我应用df.dropna(inplace = True)
时,每列中的非空值的数量将减少到以前甚至没有包含在数据框中的数量:8665,甚至没有在“关键字”列中,包含最少非空值的地方。
这怎么可能?以及数字8665是怎么产生的?
原始数据框的外观如下:
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 10866 entries, 0 to 10865
Data columns (total 19 columns):
id 10866 non-null int64
imdb_id 10856 non-null object
popularity 10866 non-null float64
budget 10866 non-null int64
revenue 10866 non-null int64
original_title 10866 non-null object
cast 10790 non-null object
director 10822 non-null object
keywords 9373 non-null object
overview 10862 non-null object
runtime 10866 non-null int64
genres 10843 non-null object
production_companies 9836 non-null object
release_date 10866 non-null object
vote_count 10866 non-null int64
vote_average 10866 non-null float64
release_year 10866 non-null int64
budget_adj 10866 non-null float64
revenue_adj 10866 non-null float64
dtypes: float64(4), int64(6), object(9)
memory usage: 1.6+ MB
这是我删除NA后数据框的外观
df.dropna(inplace = True)
<class 'pandas.core.frame.DataFrame'>
Int64Index: 8665 entries, 0 to 10865
Data columns (total 19 columns):
id 8665 non-null int64
imdb_id 8665 non-null object
popularity 8665 non-null float64
budget 8665 non-null int64
revenue 8665 non-null int64
original_title 8665 non-null object
cast 8665 non-null object
director 8665 non-null object
keywords 8665 non-null object
overview 8665 non-null object
runtime 8665 non-null int64
genres 8665 non-null object
production_companies 8665 non-null object
release_date 8665 non-null object
vote_count 8665 non-null int64
vote_average 8665 non-null float64
release_year 8665 non-null int64
budget_adj 8665 non-null float64
revenue_adj 8665 non-null float64
dtypes: float64(4), int64(6), object(9)
memory usage: 1.3+ MB
答案 0 :(得分:3)
考虑以下代码:
import pandas as pd
import numpy as np
df = pd.DataFrame(
{"name": ['A', 'B', 'C'],
1: [1, 2, np.nan],
2: [1, np.nan, 3],
3: [np.nan, 2, 3]})
print(df)
df.dropna(inplace=True)
print(df)
您认为df.dropna
之后的数据帧是什么样的?默认情况下,pandas
将删除其中任何列具有空值的行。因此,即使每一列只有一个空值,也会删除所有三行。您可以使用how
函数的thresh
,subset
和dropna
参数来更改此行为。
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.dropna.html