使用以下DataFrame,如何根据索引移动"beyer"列而不让Pandas将移位值分配给不同的索引值?
line_date line_race beyer
horse
Last Gunfighter 2013-09-28 10 99
Last Gunfighter 2013-08-18 10 102
Last Gunfighter 2013-07-06 8 103
.....
Paynter 2013-09-28 10 103
Paynter 2013-08-31 10 88
Paynter 2013-07-27 8 100
Run Code Online (Sandbox Code Playgroud)
df['beyer'].shift(1) 生产...
line_date line_race beyer beyer_shifted
horse
Last Gunfighter 2013-09-28 10 99 NaN
Last Gunfighter 2013-08-18 10 102 99
Last Gunfighter 2013-07-06 8 103 102
.....
Paynter 2013-09-28 10 103 71
Paynter 2013-08-31 10 88 103
Paynter 2013-07-27 8 100 88
Run Code Online (Sandbox Code Playgroud)
问题在于Paynter被授予了最后枪手(他的第一张唱片)的指定.相反,我希望它像这样......
line_date line_race beyer beyer_shifted
horse
Last Gunfighter 2013-09-28 10 99 NaN
Last Gunfighter 2013-08-18 10 102 99
Last Gunfighter 2013-07-06 8 103 102
.....
Paynter 2013-09-28 10 103 NaN
Paynter 2013-08-31 10 88 103
Paynter 2013-07-27 8 100 88
Run Code Online (Sandbox Code Playgroud)
unu*_*tbu 42
使用groupby/shift应用转移到各组分别:(感谢Jeff指出这个简化)
In [60]: df['beyer_shifted'] = df.groupby(level=0)['beyer'].shift(1); df
Out[61]:
line_date line_race beyer beyer_shifted
Last Gunfighter 2013-09-28 10 99 NaN
Last Gunfighter 2013-08-18 10 102 99
Last Gunfighter 2013-07-06 8 103 102
Paynter 2013-09-28 10 103 NaN
Paynter 2013-08-31 10 88 103
Paynter 2013-07-27 8 100 88
Run Code Online (Sandbox Code Playgroud)
如果您有多索引,则可以通过将一系列ints或级别名称传递给groupby's level参数来分组多个级别.
| 归档时间: |
|
| 查看次数: |
12530 次 |
| 最近记录: |