如果值在列中,如何删除 Pandas 行
How to drop a Pandas row if a value is in a column
我有一个 Pandas 数据框,其中一列 director_name
包含电影导演,另一列 death_year
包含 NaN
或描述的浮点数他们去世的年份(例如:1996.00)。如何删除所有拥有已去世董事的行,如 death_year
列中的浮点数所示?
nconst director_name birth_year death_year
0 nm0061671 Mary Ellen Bauder 1967.00 NaN
1 nm0061865 Joseph Bauer NaN 1996.00
2 nm0062070 Bruce Baum 1981.00 NaN
3 nm0062195 Axel Baumann NaN 2015.00
4 nm0062798 Pete Baxter 1954.00 NaN
所以在上面的数据框中,第 1 行和第 3 行将被删除,因为 Joseph Bauer 于 1996 年去世,Axel Baumann 于 2015 年去世。结果是只有在世董事的数据框:
nconst director_name birth_year death_year
0 nm0061671 Mary Ellen Bauder 1967.00 NaN
1 nm0062070 Bruce Baum 1981.00 NaN
2 nm0062798 Pete Baxter 1954.00 NaN
DataFrame 很大,它包含太多行,无法实际检查并确保有人没有错误地输入死亡年份,例如 0000.000。
您可以使用 .loc
和 .notna()
:
df.loc[df['birth_year'].notna()].reset_index(drop=True)
如果您想按 death_year 删除行,请使用 .isna()
:
df.loc[df['death_year'].isna()].reset_index(drop=True)
输出:
nconst director_name birth_year death_year
0 nm0061671 Mary Ellen Bauder 1967.00 NaN
1 nm0062070 Bruce Baum 1981.00 NaN
2 nm0062798 Pete Baxter 1954.00 NaN
在这两种情况下,我们对您粘贴的示例都有相同的输出。您可以选择更适合整个数据框的内容。
我注意到当 'death_year' 不是 NaN 时,birth_year 是。
df.dropna(subset=['birth_year'], inplace=True)
我有一个 Pandas 数据框,其中一列 director_name
包含电影导演,另一列 death_year
包含 NaN
或描述的浮点数他们去世的年份(例如:1996.00)。如何删除所有拥有已去世董事的行,如 death_year
列中的浮点数所示?
nconst director_name birth_year death_year
0 nm0061671 Mary Ellen Bauder 1967.00 NaN
1 nm0061865 Joseph Bauer NaN 1996.00
2 nm0062070 Bruce Baum 1981.00 NaN
3 nm0062195 Axel Baumann NaN 2015.00
4 nm0062798 Pete Baxter 1954.00 NaN
所以在上面的数据框中,第 1 行和第 3 行将被删除,因为 Joseph Bauer 于 1996 年去世,Axel Baumann 于 2015 年去世。结果是只有在世董事的数据框:
nconst director_name birth_year death_year
0 nm0061671 Mary Ellen Bauder 1967.00 NaN
1 nm0062070 Bruce Baum 1981.00 NaN
2 nm0062798 Pete Baxter 1954.00 NaN
DataFrame 很大,它包含太多行,无法实际检查并确保有人没有错误地输入死亡年份,例如 0000.000。
您可以使用 .loc
和 .notna()
:
df.loc[df['birth_year'].notna()].reset_index(drop=True)
如果您想按 death_year 删除行,请使用 .isna()
:
df.loc[df['death_year'].isna()].reset_index(drop=True)
输出:
nconst director_name birth_year death_year
0 nm0061671 Mary Ellen Bauder 1967.00 NaN
1 nm0062070 Bruce Baum 1981.00 NaN
2 nm0062798 Pete Baxter 1954.00 NaN
在这两种情况下,我们对您粘贴的示例都有相同的输出。您可以选择更适合整个数据框的内容。
我注意到当 'death_year' 不是 NaN 时,birth_year 是。
df.dropna(subset=['birth_year'], inplace=True)