Нужно написать код для замены пропусков с условиями
Ребята, помогите. Я новичок. Надо решить такой вопрос. Есть пропуски в файле 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