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