我有以下数据帧:
id step_description site \
0 1233211020 1 3242342j3kas
2 1233211020 1 deeqmkw213
20 1233211020 2 123321
49 1233211020 1 123321
spotted_on group
0 2021-02-15 14:57:50+00:00 test1
2 2021-02-13 14:36:55+00:00 test1
20 2021-02-11 18:41:00+00:00 test1
49 2021-02-10 07:25:00+00:00 test1
我想创建一个新的dataframe,它将实现以下功能: 如果已在站点123321和站点deeqmkw213上发现id,则新df将如下所示:
id spotted_on origin_site destination_site group order
1233211020 2021-02-10 07:25:00+00:00 123321 123321 test1 1
1233211020 2021-02-13 14:36:55+00:00 123321 deeqmkw213 test1 2
1233211020 2021-02-15 14:57:50+00:00 deeqmkw213 3242342j3kas test1 3
我实际上有一个可行的解决方案,但我仍在学习熊猫,不知道是否有更有效的方法来做到这一点。 而且,我的sulotion目前缺少对第一行的处理,这应该是最早的条目(索引0处的行)
我的解决方案:
def _create_orders_by_ids(self, ids_grouped_data):
data = []
idx = 0
next_idx = 1
order = 1
animal_grouped_data.sort_values(by=SPOTTED_ON, inplace=True)
while next_idx < len(animal_grouped_data):
row = animal_grouped_data.iloc[idx]
next_row = animal_grouped_data.iloc[next_idx]
if next_row.site == row.site:
idx += 1
next_idx += 1
else:
data.append({id: row.id,
ORIGIN_SITE: row.site,
DESTINATION_SITE: next_row.site,
DATE: row.spotted_on,
GROUP: row.group,
ORDER: order})
order += 1
idx += 1
next_idx += 1
df = pd.DataFrame(data)
return df
目前没有回答
相关问题 更多 >
编程相关推荐