ojo*_*jon 8 python dataframe pandas data-science
I have a pandas dataframe and want to get rid of rows in which the column 'A' is negative. I know 2 ways to do this:
df = df[df['A'] >= 0]
Run Code Online (Sandbox Code Playgroud)
or
selRows = df[df['A'] < 0].index
df = df.drop(selRows, axis=0)
Run Code Online (Sandbox Code Playgroud)
What is the recommended solution? Why?
推荐的解决方案是最有效的,在这种情况下,它是第一个。
df = df[df['A'] >= 0]
Run Code Online (Sandbox Code Playgroud)
关于第二种解决方案
selRows = df[df['A'] < 0].index
df = df.drop(selRows, axis=0)
Run Code Online (Sandbox Code Playgroud)
您正在重复切片过程。但是让我们把它分解成碎片来理解为什么。
当你写
df['A'] >= 0
Run Code Online (Sandbox Code Playgroud)
您正在创建一个掩码,一个布尔系列,其中包含 df 的每个索引的条目,其值根据条件为 True 或 False(在这种情况下,如果给定索引处的列“A”的值大于或等于 0)。
当你写
df[df['A'] >= 0]
Run Code Online (Sandbox Code Playgroud)
您访问掩码 (df['A'] >= 0) 为 True 的行。这是 Pandas 支持的一种切片方法,它允许您通过传递布尔系列来选择某些行,并返回原始 DataFrame 的视图,其中仅包含系列为 True 的条目。
最后,当你写这个
selRows = df[df['A'] < 0].index
df = df.drop(selRows, axis=0)
Run Code Online (Sandbox Code Playgroud)
你正在重复这个过程,因为
df[df['A'] < 0]
Run Code Online (Sandbox Code Playgroud)
已经在切片您的 DataFrame (在这种情况下,您要删除的行)。然后您将获得这些索引,返回到原始 DataFrame 并显式删除它们。不需要这个,你已经在第一步中对 DataFrame 进行了切片。
| 归档时间: |
|
| 查看次数: |
11489 次 |
| 最近记录: |