[英]pandas remove rows from dataframe based on multiple conditions without for loops
[英]How do I remove rows based on multiple conditions in Python / Pandas dataframe?
我有一张看起来像这样的桌子:
鉴定 | 软件 | 版本 | 日期 |
---|---|---|---|
0 | 微软办公软件 | 2个 | 2022-05-25 |
0 | 微软办公软件 | 1个 | 2022-03-21 |
0 | Adobe Photoshop | 2个 | 2022-04-20 |
1个 | Adobe Photoshop | 1个 | 2021-04-04 |
“已识别”列是我使用此代码创建的列:
import pandas as pd
import datetime as dt
dfcheck = pd.read_csv('version-data.csv', encoding='utf8')
df = pd.DataFrame(dfcheck)
olderdata = dt.date.today() - pd.DateOffset(years=1)
df['Identified'] = (df['Date'] <= olderdata).astype(int)
在这里我标记了所有超过一年的东西。 所以现在我要做的是创建一个新的数据框,它显示所有已识别的软件包。 这是我正在寻找的输出:
鉴定 | 软件 | 版本 | 日期 |
---|---|---|---|
0 | Adobe Photoshop | 2个 | 2022-04-20 |
1个 | Adobe Photoshop | 1个 | 2021-04-04 |
我如何实现这一目标?
您可以使用groupby.filter
:
out = df.groupby('Software').filter(lambda x: (x.Identified==1).any())
print (out)
Identified Software Version Date
2 0 Adobe Photoshop 2 2022-04-20
3 1 Adobe Photoshop 1 2021-04-04
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.