tuk*_*ijp 4 python dataframe pandas
如何通过键匹配来移动 dataFrame 值?例如,我有一个包含“date”、“id”和“num0”列的数据帧。当我移动这个数据帧时,我想考虑“日期”和“id”值。
通过这段代码,我得到了“当前结果”。但是我想将 null 值设置为 row3 的移位值,因为没有 ID='A' 和 date='2015-10-05' 的记录。
df_temp1 = pd.DataFrame({'id' : ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
'date' : ['2015-10-1', '2015-10-2', '2015-10-3', '2015-10-4','2015-10-1', '2015-10-2', '2015-10-3', '2015-10-4'],
'num0' : ['1', '2', '3', '4', '1', '2', '3', '4']})
df_temp1['num0_shifted'] = df_temp1['num0'].shift(-1)
df_temp1.head(10)
Run Code Online (Sandbox Code Playgroud)
当前结果:
date id num0 num0_shifted
0 2015-10-1 A 1 2
1 2015-10-2 A 2 3
2 2015-10-3 A 3 4
3 2015-10-4 A 4 1
4 2015-10-1 B 1 2
5 2015-10-2 B 2 3
6 2015-10-3 B 3 4
7 2015-10-4 B 4 NaN
Run Code Online (Sandbox Code Playgroud)
我想要得到的结果:
date id num0 num0_shifted
0 2015-10-1 A 1 2
1 2015-10-2 A 2 3
2 2015-10-3 A 3 4
3 2015-10-4 A 4 NaN
4 2015-10-1 B 1 2
5 2015-10-2 B 2 3
6 2015-10-3 B 3 4
7 2015-10-4 B 4 NaN
Run Code Online (Sandbox Code Playgroud)
df_temp1['num0_shifted'] = df_temp1.groupby('id')['num0'].shift(-1)
print (df_temp1)
date id num0 num0_shifted
0 2015-10-1 A 1 2
1 2015-10-2 A 2 3
2 2015-10-3 A 3 4
3 2015-10-4 A 4 NaN
4 2015-10-1 B 1 2
5 2015-10-2 B 2 3
6 2015-10-3 B 3 4
7 2015-10-4 B 4 NaN
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2917 次 |
| 最近记录: |