我有一个熊猫数据框,如下所示
此数据帧已按三列分组
O
,
A
,
N
但正如你所见,它不是按
time
我的目标是根据
时间
通过维护
A.
,
N
shift(-1)
手术
value
列来创建一个
value_next
输出应该如下所示(
NaN
-
我做到了以下几点:
import pandas as pd
# Initialize data to lists.
data = [{'time': 10, 'O': 1, 'A': 2, 'N':3, 'value': 10},
{'time': 7, 'O': 1, 'A': 2, 'N':3, 'value': 11},
{'time': 15, 'O': 1, 'A': 2, 'N':3, 'value': 12},
{'time': 11, 'O': 2, 'A': 2, 'N':3, 'value': 20},
{'time': 12, 'O': 2, 'A': 2, 'N':3, 'value': 21},
{'time': 1, 'O': 2, 'A': 2, 'N':3, 'value': 25}]
# Creates DataFrame.
df = pd.DataFrame(data)
#sorting
df.sort_values(by=['O', 'A', 'N', 'time'], ascending=[True, True, True, True])
#shift
df['value_next'] = df.groupby(['O', 'A', 'N'])['value'].shift(-1)
这将生成低于预期值的输出。我错过了什么?
请建议。