aer*_*ite 2 python sorting pandas
假设,我有一个 DataFrame df。
>>> DATA = {'id':[1,2,3,4,5], 'salary':[1200,2300,2400,3620,2100] }
>>> df = DataFrame(DATA)
>>> df
id salary
0 1 1200
1 2 2300
2 3 2400
3 4 3620
4 5 2100
Run Code Online (Sandbox Code Playgroud)
从这个 DataFrame df,我可以得到一个新的 DataFrame df1 与工资的累积总和
>>> df['salary'] = df['salary'].cumsum()
>>> df
id salary
0 1 1200
1 2 3500
2 3 5900
3 4 9520
4 5 11620
Run Code Online (Sandbox Code Playgroud)
这是很常见的场景。
现在,如果我得到 df1 并且我必须找到 df 呢?
id salary id salary
0 1 1200 0 1 1200
1 2 3500 1 2 2300
2 3 5900 ==> 2 3 2400
3 4 9520 3 4 3620
4 5 11620 4 5 2100
Run Code Online (Sandbox Code Playgroud)
我必须从其累积总和中找到所有 id 的实际工资。
>>> df
id salary
0 1 1200
1 2 3500
2 3 5900
3 4 9520
4 5 11620
>>> df['salary'] = df['salary'].diff().fillna(df['salary'].iloc[0])
>>> df
id salary
0 1 1200
1 2 2300
2 3 2400
3 4 3620
4 5 2100
Run Code Online (Sandbox Code Playgroud)
虽然.fillna在这里效率不高,因为它只是第一个出现 null 的值。因此,您只需要将第一个值替换为 的累积值.iloc[0]。