[PYTHON] [Pandas] Doppelte Löschung bei gleichzeitiger Ergänzung von Fehlern

Einführung

Wenn Sie Duplikate eines Pandas-Datenrahmens mit einem bestimmten Schlüssel löschen, möchten Sie möglicherweise Duplikate löschen, nachdem fehlende Datensätze zwischen Datensätzen ausgefüllt wurden, bei denen festgestellt wurde, dass sie derselbe Datensatz sind.

import pandas as pd

df = pd.DataFrame({
    'building_name': ['Gebäude A.', 'Eine Rechnung', None, 'C Gebäude', 'B Gebäude', None, 'D Rechnung'],
    'property_scale': ['large', 'large', , 'small', 'small', 'small', 'large'],
    'city_code': [1, 1, 1, 2, 1, 1, 1]
})
df
building_name property_scale city_code
Gebäude A. large 1
Gebäude A. large 1
None small 1
C Gebäude small 2
B Gebäude small 1
None small 1
D Gebäude large 1

Abschluss + doppelte Entfernungsfunktion

from pandas.core.frame import DataFrame

def drop_duplicates(df: DataFrame, subset: list, fillna: bool = False) -> DataFrame:
    """Doppelte Löschung nach Ergänzung einer Teilmenge zu einem Schlüssel.

    Args:
        df (DataFrame):Beliebiger Datenrahmen
        subset (list):Schlüssel zum Löschen von Duplikaten
        fillna (bool):Gibt an, ob das Fehlen zwischen doppelten Datensätzen abgeschlossen werden soll. default False.
    
    Returns:
        DataFrame

    """
    group_info = df.groupby(by=subset)
    new_df = pd.concat([
        group_info.get_group(group_name).fillna(method='bfill').fillna(method='ffill')
        for group_name
        in group_info.groups.keys()])
    new_df = new_df.drop_duplicates(subset=subset)
    return new_df

Lauf

drop_duplicates(df, ['property_scale', 'city_code'], True)
building_name property_scale city_code
Gebäude A. large 1
B Gebäude small 1
C Gebäude small 2

Recommended Posts

[Pandas] Doppelte Löschung bei gleichzeitiger Ergänzung von Fehlern
8rep --Pandas String Löschcode