Tengo dos marcos de datos. Los encabezados son así: quiero eliminar las filas de df2 que no contienen nombres de empresas de df1 (subcadenas). ¿Cómo puedo hacer eso? gracias de antemano

-1
KawaiKx 10 abr. 2021 a las 08:51

3 respuestas

La mejor respuesta

Puede consultar .str.count() de df1.COMPANY subcadenas en df2.COMPANY para crear una máscara booleana:

mask = df2.COMPANY.str.count('|'.join(df1.COMPANY.values)).astype(bool)
df2 = df2[mask]
1
tdy 10 abr. 2021 a las 06:14

Parece que desea unirse internamente a los marcos de datos:

pd.merge(df1, df2, on='COMPANY', how='inner')

Consulte la documentación aquí para fusionar: https://pandas.pydata.org/ pandas-docs / stable / reference / api / pandas.DataFrame.merge.html

0
SequenceToSequence 10 abr. 2021 a las 06:01
#extarct unique company list from 1st dataframe

company_list = set(df1['company'].to_list())

#fucntion to check if any unique string is present or not 
def test_presnce(x,company_list):
    return(any(value for value in company_list if value in x))

#company_present column can now be used to filter the required data
df2['company_present'] = df2['company'].apply(test_presnce, args=(company_list,))
0
Prakhar Gupta 10 abr. 2021 a las 06:18