![](/img/trans.png)
[英]How to shift column values on a single dataframe row (Python Pandas)
[英]How to shift row values with condition in a Pandas dataFrame
如何使用鍵匹配來移動 dataFrame 值? 例如,我有一個包含“date”、“id”和“num0”列的數據框。 當我移動這個數據框時,我想考慮 'date' 和 'id' 值。
通過這段代碼,我得到了“當前結果”。 但是我想將空值設置為 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)
當前結果:
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
我想得到的結果:
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
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.