熊猫 - 将行替换为空值并删除与两个条件匹配的行



>我有一个数据帧,我在其中获取列的子集,然后想要过滤掉有条件地匹配两个条件的行。

数据帧如下所示:

Name     Err1    Err2    Page 
Amazon   404     201     Shopping
Facebook 202             Social
Goku                     Shopping
Ross             203     Shopping

我将空值替换为 '-' 将数据与 Err1 和 Err2 分组,并获取 Err1 的唯一计数。

df['err1'].fillna("-", inplace=True)
df['err2'].fillna("-", inplace=True)
df.groupby(["Name","Err1", "Err2"]).agg({"Err1": "count"})

这给了我:

Name     Err1    Err2    Err1 
Amazon   404     201     1
Facebook 202      -      1
Goku      -       -      1
Ross      -      203     1

a) 我想删除所有同时具有"Err1"和"Err2"== "-"的行,并且仅在 Err1 或 Err2 不是"-"时才显示行。
b) 在上面,如何获得 Err1 和 Err2 组合的唯一计数,而不仅仅是 Err1 的唯一计数?

我不想使用 for 循环并遍历数据,因为数据集超过 100k 行。有没有有效的方法来实现这一目标?

这是当 Errs 全部为空时首先需要dropna的一种方法

df=df[df[['Err1','Err2']].isnull().all(1)].copy()

关于唯一计数,当您与Err1Err2groupby时,它已经得到了他们两个count

df.fillna('NaN').groupby(["Name","Err1", "Err2"]).size()

最新更新