如何根据条件选择数据框中的行

时间:2019-09-25 13:01:58

标签: python pandas

我有一个电子邮件数据框,其中给出了以下查询:

williams = emails[emails["employee"] == "kean-s"]

这将选择所有具有雇员kean-s的行。然后,我计算频率并打印最高频率。就是这样的:

williams["X-Folder"].value_counts()[:10]

这给出了这样的输出:

attachments                   2026
california                     682
heat wave                      244
ferc                           188
pr-crisis management            92
federal legislation             88
rto                             78
india                           75
california - working group      72
environmental issues            71

现在,我需要打印电子邮件中具有X_Folder列等于附件,加利福尼亚,加热方式等的所有行。我该如何处理?当我打印values [0]时,它只返回频率编号而不是对应的频率(尝试打印该频率编号是因为如果我能够遍历它,只会在数据框中放入一个条件)

1 个答案:

答案 0 :(得分:1)

Series.isinboolean indexing一起用于索引值:

df = williams[williams["X-Folder"].isin(williams["X-Folder"].value_counts()[:10].index)]

或者:

df = williams[williams["X-Folder"].isin(williams["X-Folder"].value_counts().index[:10])]

如果需要过滤原始DataFrame中的所有行(也包括不匹配kean-s的行),请使用:

df1 = emails[emails["X-Folder"].isin(williams["X-Folder"].value_counts().index[:10])]