python - 数据框上的dropna(),为什么行数低于预期?
问题描述
我有一个数据框,其中大多数列都有 10866 个非空值,除了几列较少。具有最少数量的非空值的列是“关键字”(9373)。因此,当我从 Dataframe 中删除 NA 值时,我希望每列的非空值的数量等于非空值最少的列中的非空值的数量;在这种情况下,“关键字”。
但是,当我申请时df.dropna(inplace = True)
,每列中非空值的数量减少到以前甚至不包含在 Dataframe 中的数量: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 后 Dataframe 的样子
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
解决方案
考虑以下代码:
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
推荐阅读
- c++ - 函数无法识别变量
- go - GoLang Firestore 慢速批量写入
- javascript - `[object: null prototype] { title: 'video', description: '我的视频!!' } 关于 nodejs - multer`
- javascript - 使用三角函数为 HTML5 画布设置动画,但如何定位这个正方形?
- r - 在 R 中循环遍历 nc 文件
- c++ - 在 c++ windows 桌面应用程序中显示 webview/webpage 窗口
- unity3d - ArgumentException:GetComponent 要求请求的组件“GameObject”派生自 MonoBehaviour 或 Component 或者是一个接口
- subscription - FIWARE QuantumLeap 健全性检查失败:QuantumLeap 无法从 Orion 获取更改的数据
- python - 如何将带有索引的选定列转换为熊猫中的元组列表
- if-statement - 如果变量的值发生更改,如何更改 UI?