df_recap:
[img]https://i .sstatic.net/KnV5JuKG.png[/img]
и df23:

Мне нужно скопировать «Количество» и «единицу измерения» из df23 в df_recap для этого списка кода (тип код Л2.3). Может присутствовать 2 или более элемента кода в df23 (в этом случае измеренная_единица уникальна, а количество представляет собой сумму значений/записей).

С помощью этого кода:
`
Код: Выделить всё
# Carica i file CSV
df_semifinal = pd.read_csv('SemiFinal.csv')
df_l23 = pd.read_csv('L23.csv')
# 1. Raggruppa il dataset df_l23 per 'code', somma le quantità e mantiene il valore unico di 'measurement_unit'
df_l23_grouped = df_l23.groupby('code').agg({
'quantity': 'sum', # Somma i valori di 'quantity'
'measurement_unit': 'first' # Mantiene il primo valore di 'measurement_unit' (assumendo sia uguale per lo stesso code)
})
# 2. Filtra le righe di df_semifinal dove 'Tipo Voce' è 'L2.3' e le colonne 'Quantità' o 'Unità di misura' sono NaN o '/'
mask = (df_semifinal['Tipo Voce'] == 'L2.3') & (
df_semifinal['Quantità'].isna() | df_semifinal['Quantità'].eq('/') |
df_semifinal['Unità di misura'].isna() | df_semifinal['Unità di misura'].eq('/')
)
# 3. Unisci il dataset df_semifinal con df_l23_grouped in base al 'Codice' di df_semifinal e 'code' di df_l23_grouped
df_merged = pd.merge(df_semifinal[mask], df_l23_grouped, left_on='Codice', right_on='code', how='left')
# 4. Sostituisci i valori mancanti o '/' nelle colonne 'Quantità' e 'Unità di misura' con i dati da df_l23_grouped
df_semifinal.loc[mask, 'Quantità'] = df_merged['quantity']
df_semifinal.loc[mask, 'Unità di misura'] = df_merged['measurement_unit']
# 5. Rimuovi eventuali colonne in eccesso come 'code' se non necessarie
df_semifinal.drop(columns=['code'], inplace=True, errors='ignore')
# 6. Salva il dataset aggiornato
df_semifinal
[img]https://i .sstatic.net/WPHI59wX.png[/img]
значение L2.3 A.01.01.01 должно быть Quantity = 1 и A.02.01.01 Quantity = 1,36
Спасибо
Подробнее здесь: https://stackoverflow.com/questions/790 ... 2-datasets