我试图用一行代码完成这个任务。我想要groupby-->filter-->condition。在Python/Pandas中,我试图根据'full_name'列显示重复项。如果没有,我想显示“无”。我尝试了这行代码,但它给出了无效的语法:mktg_table = mktg_employees.groupby('full_name').filter(lambda x: len(x) > 1 else 'None')examples
mktg_table = mktg_employees.groupby('full_name').filter(lambda x: len(x) > 1 else 'None')
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')
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
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)
3条答案
按热度按时间xu3bshqb1#
例如,参见以下数据:
您可以使用此选项保留重复数据:
输出将是:
如果“无”输出很重要:
qfe3c7zg2#
因为你没有MRE,如果你已经创建了一个测试数据,下面的解决方案适用于:
对于非重复病例:
输出:
对于重复病例:
输出:
nlejzf6q3#