Python 熊猫会在一列上删除重复项,并在另一列中仅保留具有最频繁值的行
我有一个如下所示的数据帧:Python 熊猫会在一列上删除重复项,并在另一列中仅保留具有最频繁值的行,python,pandas,dataframe,duplicates,Python,Pandas,Dataframe,Duplicates,我有一个如下所示的数据帧: ip_address malware_type ip_1 malware_1 ip_2 malware_2 ip_1 malware_1 ip_1 malware_1 ip_1 malware_2 ip_2 malware_2 ip_2 malware_3 . . . 我想删除基于“ip_地址”列的重复行,但是在删除时,我只想保留每个i
ip_address malware_type
ip_1 malware_1
ip_2 malware_2
ip_1 malware_1
ip_1 malware_1
ip_1 malware_2
ip_2 malware_2
ip_2 malware_3
.
.
.
我想删除基于“ip_地址”列的重复行,但是在删除时,我只想保留每个ip最频繁的“恶意软件类型”值。因此,生成的数据帧应该如下所示:
ip_address malware_type
ip_1 malware_1
ip_2 malware_2
.
.
.
我将非常感谢任何帮助,以实现上述目标。谢谢。让我们试试
模式
s=df.groupby('ip_address').malware_type.agg(lambda x : x.mode()[0]) # .reset_index()
Out[56]:
ip_address
ip_1 malware_1
ip_2 malware_2
Name: malware_type, dtype: object
你可以用
你可以在这里用
另一种是使用的方法
谢谢@BEN_YO,你的解决方案正是我想要的。
df.groupby('ip_address').malware_type.agg(pd.Series.mode)
ip_address
ip_1 malware_1
ip_2 malware_2
Name: malware_type, dtype: object
from scipy.stats import mode
df.groupby('ip_address').malware_type.agg(lambda x: mode(x).mode)
ip_address
ip_1 malware_1
ip_2 malware_2
Name: malware_type, dtype: object
def md(s):
c = Counter(s)
return c.most_common(1)[0][0]
df.groupby('ip_address').malware_type.agg(md)
ip_address
ip_1 malware_1
ip_2 malware_2
Name: malware_type, dtype: object