如何使用pandas基于2列的“OR”语句删除excel行?

wko9yo5t  于 2023-09-29  发布在  其他
关注(0)|答案(1)|浏览(72)

我有一个大约有4000行的电子表格。其中一列名为“com”(不是我做的),值为com、gov或org。我有这三个声明,前两个工作很好,当我只想保留com或gov,但第三个下降时,我想放弃任何不是com或gov的东西。

combinedMonthVulnDataFrame.drop(combinedMonthVulnDataFrame[combinedMonthVulnDataFrame['com'] != "com"].index, inplace = True)
combinedMonthVulnDataFrame.drop(combinedMonthVulnDataFrame[combinedMonthVulnDataFrame['com'] != "gov"].index, inplace = True)
  • combinedMonthVulnDataFrame.drop(combinedMonthVulnDataFrame[(combinedMonthVulnDataFrame 'com']!=“com”)|(combinedMonthVulnDataFrame['com']!=“gov”)].index,inplace = True)

不幸的是,它正在删除第三个选项上的所有行。
帮忙吗?

von4xj4u

von4xj4u1#

您可以将掩码与列表配对以过滤记录。通过使用不需要通过使用记录的索引来删除的掩码,您将根据记录是否满足“True/False”标准来删除记录,而

data =  [["com", "Namespace", "Deployment", "Component", "CVE", "Severity"],
 ["dev-stable", "default", "arango-agnt-zqdd3ekj-35ba4a", "ansi-regex", "CVE-2021-3807", "IMPORTANT"],
 ["demo-gov", "default", "arango-agnt-zqdd3ekj-35ba4a", "ansi-regex", "CVE-2021-3807", "IMPORTANT"],
 ["com", "rocketchat", "rocketchat-quantinuum", "coreutils", "CVE-2016-2781", "LOW"],
 ["utilities", "default", "deployments-webserver", "libonig", "CVE-2019-16163", "MODERATE"]]

df = pd.DataFrame(data[1:], columns=data[0])

mask = df['com'].isin(['com'])
df[~mask]

#       com         Namespace   Deployment                  Component
# 2     com         rocketchat  rocketchat-quantinuum       coreutils

如果你不想让记录出现在你的列表中,你也可以对掩码求反,而

mask = df['com'].isin(['com'])
df[~mask]

#       com         Namespace   Deployment                  Component
# 0     dev-stable  default     arango-agnt-zqdd3ekj-35ba4a ansi-regex
# 1     demo-gov    default     arango-agnt-zqdd3ekj-35ba4a ansi-regex
# 3     utilities   default     deployments-webserver       libonig

这种模式非常灵活,很容易进行更改。这是一种方法。

相关问题