[英]How to delete rows with multiple conditions in pandas dataframe
import pandas as pd
import numpy as np
print df
我是新手,我用熊貓來處理Excel文件。 我有一個像波紋管這樣的數據框
DAT_KEY IP DATA
01-04-19 10.0.0.1 3298329
01-04-19 10.0.0.1 0
02-04-19 10.0.0.1 3298339
02-04-19 10.0.0.1 0
01-04-19 10.0.0.2 3233233
01-04-19 10.0.0.2 0
01-04-19 10.0.0.3 0
我只想刪除具有相同IP且DAT_KEY
和DATA=0
。 不想刪除具有DATA=0
行,但DAT_KEY和IP唯一。
我的預期結果:
DAT_KEY IP DATA
01-04-19 10.0.0.1 3298329
02-04-19 10.0.0.1 3298339
01-04-19 10.0.0.2 3233233
01-04-19 10.0.0.3 0
我嘗試放置重復副本,但不適合我的情況
df = df.drop_duplicates()
采用
groupby
函數用於根據某些條件將數據分為幾組。 .first()
-首先計算組值。 防爆。
df = df.groupby(['DAT_KEY','IP'],as_index=False,sort=False).first()
print(df)
O / P:
DAT_KEY IP DATA
0 01-04-19 10.0.0.1 3298329
1 02-04-19 10.0.0.1 3298339
2 01-04-19 10.0.0.2 3233233
3 01-04-19 10.0.0.3 0
也許這就是您需要的:
DAT_KEY IP DATA
0 01-04-19 10.0.0.1 3298329
1 01-04-19 10.0.0.1 0
2 02-04-19 10.0.0.1 3298339
3 02-04-19 10.0.0.1 0
4 01-04-19 10.0.0.2 3233233
5 01-04-19 10.0.0.2 0
6 01-04-19 10.0.0.3 0
7 01-04-19 10.0.0.1 99999
df.groupby(["DAT_KEY","IP"], as_index=False,sort=False).apply(lambda g: g if len(g)==1 else g[g["DATA"]!=0] ).reset_index(drop=True)
Out[94]:
DAT_KEY IP DATA
0 01-04-19 10.0.0.1 3298329
1 01-04-19 10.0.0.1 99999
2 02-04-19 10.0.0.1 3298339
3 01-04-19 10.0.0.2 3233233
4 01-04-19 10.0.0.3 0
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.