pandas - 有没有办法在熊猫中通过 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
推荐阅读
- javascript - 如何将数组中的所有表情放入嵌入中?- 不和谐.js
- ios - 使用操作来管理函数调用之间的不平衡
- apache - 是否可以重定向子域通配符
- javascript - 在单独的 AJAX 函数/API 调用中使用现有的 lat/lng 传单标记
- tornadofx - 有没有办法打印 TornadoFX 样式表?
- image-segmentation - 内置拟合不会在 keras 的自定义指标中传递正确的 y_true 和 y_pred 形状
- python - 带有字典数据的 Ansible 查找模块
- go - BrowserModProxy 未通过 golang 运行
- python - 在python中获取价值组件?
- java - Java Flight Recording 不报告 Java Mission Control 中的死锁