熊猫groupby:如何在每个组内替换价值?

时间:2019-09-27 11:39:51

标签: pandas-groupby

经过一些数据操作,我已经使用熊猫合并了两个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)

Stefano的信用额

0 个答案:

没有答案