После нескольких манипуляций с данными я слил два csv-файла, используя pandas, и это закончилось примерно так:
ID;Age;Year;Income
3214;78;2016;76000
3214;78;2015;76500
3214;78;2014;76511
1598;59;2014;58989
1598;59;2013;57800
1598;59;2012;56500
7771;68;2017;89100
7771;68;2016;88700
Это сгруппировано по ID, и мой желаемый результат выглядит так:
ID;Age;Year;Income
3214;78;2016;76000
3214;77;2015;76500
3214;76;2014;76511
1598;59;2014;58989
1598;58;2013;57800
1598;57;2012;56500
7771;68;2017;89100
7771;67;2016;88700
Вот мой код.Однако это не работает.Любая помощь будет оценена!
df = pd.read_csv('sample.csv')
print(df)
#cols to replace values for
cols = ['Age']
final = pd.DataFrame()
for key, grp in df.groupby(['ID']):
idx = df.groupby('ID').Year.transform('idxmax')
if grp.loc[grp['Year'] == grp['Year'].max()]:
df.iloc[idx].reset_index(drop=True).assign(**{'Age' : df.Age, 'Income' : df.Income})
else:
#max values based on year
replace = grp.loc[grp['Year'] == grp['Year'].max()]
#replace the values
for col in cols:
grp[col] = replace[col]-1
#append the values
final = final.append(grp)
print(final)
кредит Стефано