经过一些数据操作,我已经使用熊猫合并了两个csv文件,结果如下所示:
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)