【发布时间】:2017-10-21 17:22:38
【问题描述】:
我有两个具有以下格式的熊猫数据框:
df_ts = pd.DataFrame([
[10, 20, 1, 'id1'],
[11, 22, 5, 'id1'],
[20, 54, 5, 'id2'],
[22, 53, 7, 'id2'],
[15, 24, 8, 'id1'],
[16, 25, 10, 'id1']
], columns = ['x', 'y', 'ts', 'id'])
df_statechange = pd.DataFrame([
['id1', 2, 'ok'],
['id2', 4, 'not ok'],
['id1', 9, 'not ok']
], columns = ['id', 'ts', 'state'])
我正在尝试将其转换为格式,例如:
df_out = pd.DataFrame([
[10, 20, 1, 'id1', None ],
[11, 22, 5, 'id1', 'ok' ],
[20, 54, 5, 'id2', 'not ok'],
[22, 53, 7, 'id2', 'not ok'],
[15, 24, 8, 'id1', 'ok' ],
[16, 25, 10, 'id1', 'not ok']
], columns = ['x', 'y', 'ts', 'id', 'state'])
我了解如何通过按 id 分组然后遍历每一行并在出现时更改状态来迭代地完成它。是否有熊猫内置的更具可扩展性的方式来做到这一点?
【问题讨论】:
-
我无法弄清楚
df_statechange和df_ts与df_out之间的关系,你能解释一下吗 -
我认为除了
merge之外,您还需要cut。有关更多详细信息,请参阅此线程stackoverflow.com/questions/42649224/… -
我相信你必须创建一个函数来加入你想要的框架。基本上取一行数据帧并将其与另一个数据帧的行进行比较。将函数应用于第一个数据帧。
标签: python pandas merge time-series