如何解决有没有办法在熊猫中通过 id 获取以前收到的消息?
ID Message week
10 A 1
11 A 1
12 C 1
10 B 2
12 B 2
我怎样才能得到这样的一个?:
ID Message week prevIoUs
10 A 1 nan
11 A 1 nan
12 C 1 nan
10 B 2 A
12 B 2 A
解决方法
使用 asof
合并将最近的消息带到过去。 allow_exact_matches=False
防止在同一周合并。
df = df.sort_values('week') # Only b/c merge_asof requires sorted input
res = (pd.merge_asof(df,df.rename(columns={'Message': 'previous'}),on='week',by='ID',direction='backward',allow_exact_matches=False))
ID Message week previous
0 10 A 1 NaN
1 11 A 1 NaN
2 12 C 1 NaN
3 10 B 2 A
4 12 B 2 C
,
我们可以在此处将 groupby
与 Series.shift
一起使用:
df["previous"] = df.groupby("ID")["Message"].shift()
ID Message week previous
0 10 A 1 NaN
1 11 A 1 NaN
2 12 C 1 NaN
3 10 B 2 A
4 12 B 2 C
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。