python - Python pandas 总结了数据框中的往返行程
问题描述
我有一个按车站代码计算的数据框(约 30 000 行)的行程计数。
|station from|station to|count|
|:-----------|:---------|:----|
|20001 |20040 |55 |
|20040 |20001 |67 |
|20007 |20080 |100 |
|20080 |20007 |50 |
怎么可能在有多次回程的地方获得 df 并且删除了额外的回程行,例如
|station from|station to|count|count_back|
|:-----------|:---------|:----|:---------|
|20001 |20040 |55 |67 |
|20007 |20080 |100 |50 |
我的解决方案是
- 复制数据框
- 制作复合键,更改重复数据框中的出发站和目的地站
- 合并
- 删除不必要的列和行。
但这似乎效率很低
解决方案
这是一个简单的解决方案,无需往返即可处理案件。
import pandas as pd
import numpy as np
df = pd.DataFrame({"station from":[20001,20040,20007,20080, 2, 3],
"station to":[20040,20001,20080,20007, 1, 4],
"count":[55,67,100,50, 20, 40]})
df
df = df.set_index(["station from", "station to"])
df["count_back"] = df.apply(lambda row: df["count"].get((row.name[::-1])), axis=1)
mask_rows_to_delete = df.apply(lambda row: row.name[0] > row.name[1] and row.name[::-1] in df.index, axis=1)
df = df[~mask_rows_to_delete].reset_index()
df
推荐阅读
- sql-server - 包管理器控制台中的“更新数据库”命令导致新迁移失败
- algorithm - 迭代采样方法属于哪些算法族?
- automation - 使用 Testcafe 定义选择器
- google-cloud-platform - 在 GC Composer DAG 中使用 Cloud Functions 作为运算符
- database - 我可以在查看器中引用外部数据库作为模型的属性吗?
- java - 是否必须导入在包层次结构中低于试图访问它的类的 java 类或包?
- python - NameError:名称“AnyName”未定义
- ios - SWIFT 将数据传递给变量到 cell.swift
- c - GCC 内联汇编中的 0..9 约束有什么作用?
- c# - 如何模拟派生类中的基方法?