如何保留pandas Dataframe 中的所有重复行

hgc7kmma  于 2023-06-20  发布在  其他
关注(0)|答案(3)|浏览(168)

我试图用一行代码完成这个任务。我想要groupby-->filter-->condition。
在Python/Pandas中,我试图根据'full_name'列显示重复项。如果没有,我想显示“无”。
我尝试了这行代码,但它给出了无效的语法:
mktg_table = mktg_employees.groupby('full_name').filter(lambda x: len(x) > 1 else 'None')
examples

xu3bshqb

xu3bshqb1#

例如,参见以下数据:

import pandas as pd
df = pd.DataFrame({"Name": ['Tim', 'Tim', 'John'],
                  "Age": [2, 4, 6]})
print(df)

   Name  Age
0   Tim    2
1   Tim    4
2  John    6

您可以使用此选项保留重复数据:

df = df.loc[df.duplicated(subset='Name', keep=False)]
df

输出将是:

Name  Age
0  Tim    2
1  Tim    4

如果“无”输出很重要:

if (df.empty):
    print ('None')
qfe3c7zg

qfe3c7zg2#

因为你没有MRE,如果你已经创建了一个测试数据,下面的解决方案适用于:
对于非重复病例:

import pandas as pd

df = pd.DataFrame({'id' :[1,2,3,4],'full_name' : ['ab','cd','ef','gh']})
df.shape

if df[df.duplicated(subset=['full_name'])].shape[0]>0:
    print(df[df.duplicated(subset=['full_name'], keep=False)])
else:
    print("None")

输出:

"None"

对于重复病例:

df = pd.DataFrame({'id' :[1,2,3,4],'full_name' : ['ab','cd','ef','ab']})
df.shape

if df[df.duplicated(subset=['full_name'])].shape[0]>0:
    print(df[df.duplicated(subset=['full_name'],keep=False)])
else:
    print("None")

输出:

id full_name
0   1        ab
3   4        ab
nlejzf6q

nlejzf6q3#

data={'col1':['A','A','B','C'],'col2':[2,3,4,5]}
df=pd.DataFrame(data)
df1=df[df.duplicated(subset='col1',keep=False)]

if df1.shape[0]==0:
    print("Empty")
else:
    print(df1)

相关问题