Нужно написать код для замены пропусков с условиями

Рейтинг: 0Ответов: 1Опубликовано: 20.02.2023

Ребята, помогите. Я новичок. Надо решить такой вопрос. Есть пропуски в файле csv в столбце Year_of_Release

Name. Platform Year_of_Release Genre
Madden NFL 2004 PS2. Sports
Madden NFL 2004 XB. 2003.0. Sports
Madden NFL 2004 GC. 2003.0. Sports
Madden NFL 2004 GBA. 2003.0. Sports

Как написать код так чтобы пропуск заполнялся данными если они соответствуют той же Name + Genre?

Пробовал так data.loc[data['year_of_release'] == 555, 'year_of_release'] = data.loc[data['year_of_release'] == 555, 'name'] Но он заполняет именами, а не годом.

import pandas as pd

pth1 = '/content/General project_1.csv'
pth2 = '/datasets/games.csv'
try:
  data = pd.read_csv(pth2)
except:
  data = pd.read_csv(pth1)
else:
     print('Что-то не так')
data.columns = data.columns.str.lower()
data[['year_of_release']] = data[['year_of_release']].fillna(555)
data.loc[data['year_of_release'] == 555, 'name'] = data.loc[data['year_of_release'] == 555, 'year_of_release']

Ответы

▲ 1Принят

Можно сгруппировать по двум полям и применить методы .bfill() и .ffill() для заполнения пустот назад и вперед последними (перед пустотами) непустыми значениями из столбца.

df = pd.DataFrame({'Name': ['Madden NFL 2004', 'Madden NFL 2004', 'Madden NFL 2004', 'Madden NFL 2004','Madden NFL 2004', 'Madden NFL 2004', 'Madden NFL 2004', 'Madden NFL 2004'],
                   'Platform': ['PS2.', 'XB.', 'GC.', 'GBA.', 'PS2.', 'XB.', 'GC.', 'GBA.'],
                   'Year_of_Release': [np.nan, '2003.0.', '2003.0.', '2003.0.', np.nan, '2004.0.', '2004.0.',np.nan],
                   'Genre': ['Sports', 'Sports', 'Sports', 'Sports', 'Action', 'Action', 'Action', 'Action']})
df['Year_of_Release'] = df.groupby(['Name','Genre'])['Year_of_Release'].bfill().ffill()
print(df)
              Name Platform Year_of_Release   Genre
0  Madden NFL 2004     PS2.         2003.0.  Sports
1  Madden NFL 2004      XB.         2003.0.  Sports
2  Madden NFL 2004      GC.         2003.0.  Sports
3  Madden NFL 2004     GBA.         2003.0.  Sports
4  Madden NFL 2004     PS2.         2004.0.  Action
5  Madden NFL 2004      XB.         2004.0.  Action
6  Madden NFL 2004      GC.         2004.0.  Action
7  Madden NFL 2004     GBA.         2004.0.  Action