繁体   English   中英

Python Pandas:如何使用 df.drop 和 df.loc 删除行?

[英]Python Pandas: How can I drop rows using df.drop and df.loc?

假设我有以下 dataframe:

import numpy as np
import pandas as pd

df = pd.DataFrame(
    {
        'user': ['Adam', 'Barry', 'Cindy', 'Dirk', 'Ella'],
        'income': [50000, 0, 100000, 30000, 0],
        'net worth': [250000, 1000000, 2000000, 50000, 0]
    }
)

在此处输入图像描述

到目前为止,我一直在使用以下条件根据条件删除行:

df2 = df[df.income != 0]

在此处输入图像描述

并像这样使用多个条件:

df3 = df[(df['income'] != 0) & (df['net worth'] > 100000)]

在此处输入图像描述

问题:这是删除行的首选方式吗? 如果不是,那是什么? 是否可以通过df.dropdf.loc做到这一点? 语法是什么?

.loc创建您要保留的行的子集,而不是.drop过滤您要删除的行。 drop需要行 label(索引名称)。

最后一个带drop的过滤器的等价物是:

>>> df.drop(df[~((df['income'] != 0) & (df['net worth'] > 100000))].index)

    user  income  net worth
0   Adam   50000     250000
2  Cindy  100000    2000000

# OR a bit smart:
>>> df.drop(df[(df['income'] == 0) | (df['net worth'] <= 100000)].index)

    user  income  net worth
0   Adam   50000     250000
2  Cindy  100000    2000000

您更喜欢哪种语法?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM