迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Python >

如何基于 Pandas DataFrame 中的列值删除行

作者:迹忆客 最近更新:2024/04/20 浏览次数:

我们将介绍通过使用 .drop(带有和不带有 loc)和布尔掩码检查列值的条件来基于 DataFrame 删除行的方法。


.drop 方法删除 Pandas DataFrame 中列值的行

.drop 方法接受一个或一列列名,并删除行或列。对于行,我们设置参数 axis=0,对于列,我们设置参数 axis=1(默认情况下,axis0)。我们还可以得到 TrueFalse 系列列值,根据应用于 Pandas DataFrame 中的条件。

示例代码:

# python 3.x
import pandas as pd

fruit_list = [
    ("Orange", 34, "Yes"),
    ("Mango", 24, "No"),
    ("banana", 14, "No"),
    ("Apple", 44, "Yes"),
    ("Pineapple", 64, "No"),
    ("Kiwi", 84, "Yes"),
]

# Create a DataFrame object
df = pd.DataFrame(fruit_list, columns=["Name", "Price", "Stock"])
# Get names of indexes for which column Stock has value No
indexNames = df[df["Stock"] == "No"].index
# Delete these row indexes from dataFrame
df.drop(indexNames, inplace=True)
print(df)

输出:

     Name  Price Stock
0  Orange     34   Yes
3   Apple     44   Yes
5    Kiwi     84   Yes

我们也可以通过在 df.drop 方法中使用 .loc 来获得类似的结果。

df.drop(df.loc[df["Stock"] == "Yes"].index, inplace=True)

我们还可以基于多个列值删除行。在上面的示例中,我们可以删除价格 >=30 和价格 <=70 的行。

示例代码:

# python 3.x
import pandas as pd

# List of Tuples
fruit_list = [
    ("Orange", 34, "Yes"),
    ("Mango", 24, "No"),
    ("banana", 14, "No"),
    ("Apple", 44, "Yes"),
    ("Pineapple", 64, "No"),
    ("Kiwi", 84, "Yes"),
]

# Create a DataFrame object
df = pd.DataFrame(fruit_list, columns=["Name", "Price", "Stock"])
indexNames = df[(df["Price"] >= 30) & (df["Price"] <= 70)].index
df.drop(indexNames, inplace=True)
print(df)

输出:

     Name  Price Stock
1   Mango     24    No
2  banana     14    No
5    Kiwi     84   Yes

价格大于 30 且小于 70 的行已被删除。


布尔屏蔽方法删除 Pandas DataFrame 中的行

布尔屏蔽 boolean masking 是基于列值删除 Pandas DataFrame 中的行的最好,最简单的方法。

示例代码:

# python 3.x
import pandas as pd

# List of Tuples
fruit_list = [
    ("Orange", 34, "Yes"),
    ("Mango", 24, "No"),
    ("banana", 14, "No"),
    ("Apple", 44, "Yes"),
    ("Pineapple", 64, "No"),
    ("Kiwi", 84, "Yes"),
]

# Create a DataFrame object
df = pd.DataFrame(fruit_list, columns=["Name", "Price", "Stock"])
print(df[df.Price > 40])
print("............................")
print(df[(df.Price > 40) & (df.Stock == "Yes")])

输出:

        Name  Price Stock
3      Apple     44   Yes
4  Pineapple     64    No
5       Kiwi     84   Yes
............................
    Name  Price Stock
3  Apple     44   Yes
5   Kiwi     84   Yes

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

计算 Pandas DataFrame 列的数量

发布时间:2024/04/20 浏览次数:113 分类:Python

本教程解释了如何使用各种方法计算 Pandas DataFrame 的列数,例如使用 shape 属性、列属性、使用类型转换和使用 info() 方法。

更改 Pandas DataFrame 列的顺序

发布时间:2024/04/20 浏览次数:116 分类:Python

在这篇文章中,我们将介绍如何使用 python pandas DataFrame 来更改列的顺序。在 pandas 中,使用 Python 中的 reindex() 方法重新排序或重新排列列。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便