【发布时间】:2023-03-19 09:01:02
【问题描述】:
我有几个与这些结构非常相似的弧数据帧:
| Ah: | ||
|---|---|---|
| i | j | |
| 0 | 1 | 1 |
| 1 | 1 | 2 |
| 2 | 2 | 1 |
| 3 | 2 | 2 |
| K: | ||
|---|---|---|
| Ok | Dk | |
| 0 | 3 | 4 |
| 1 | 1 | 2 |
| 2 | 2 | 1 |
我需要找到一种方法来创建一个合并两者的新数据框,遵循以下结构:
| Route: | ||||
|---|---|---|---|---|
| Ok | i | j | Dk | |
| 0 | 3 | 1 | 1 | 4 |
| 1 | 3 | 1 | 2 | 4 |
| 2 | 3 | 2 | 1 | 4 |
| 3 | 3 | 2 | 2 | 4 |
| 4 | 1 | 1 | 1 | 2 |
| 5 | 1 | 1 | 2 | 2 |
| 6 | 1 | 2 | 1 | 2 |
| 7 | 1 | 2 | 2 | 2 |
| 8 | 2 | 1 | 1 | 1 |
| 9 | 2 | 1 | 2 | 1 |
| 10 | 2 | 2 | 1 | 1 |
| 11 | 2 | 2 | 2 | 1 |
或者这个结构:
| Route: | |||
|---|---|---|---|
| i | j | k | |
| 0 | 1 | 1 | 0 |
| 1 | 1 | 2 | 0 |
| 2 | 2 | 1 | 0 |
| 3 | 2 | 2 | 0 |
| 4 | 1 | 1 | 1 |
| 5 | 1 | 2 | 1 |
| 6 | 2 | 1 | 1 |
| 7 | 2 | 2 | 1 |
| 8 | 1 | 1 | 2 |
| 9 | 1 | 2 | 2 |
| 10 | 2 | 1 | 2 |
| 11 | 2 | 2 | 2 |
目前我有一段代码可以做类似的事情,但我使用的是字典而不是 pandas 数据框(这是我想要使用的)(背后的原因是每个“路线”都有不同的使它们彼此独特的特征,因此字典很有用,当时我刚刚学习 Python)但问题是它需要太多时间并使用大量内存,所以我正在尝试找到一种方法它更快一点,避免“for”循环并尝试应用 Pandas 来创建合并的数据框。
这是我当前代码段结构的摘录,在本例中,将“A”数据帧视为包含弧的所有可能组合的数据帧,因此“if”条件确保之前存在连接创建路线。
routes = {}
for k in K:
for (i,j) in Ah:
if (Ok,i) in A and (j,Dk) in A:
routes[i,j,k] = [Here goes a lot of caracteristics of the route]
【问题讨论】:
-
您能否澄清“需要删除!”您是说该行不应该在结果框架中,还是您实际上是在寻找一个包含“需要删除!”字样的指示列? TLDR;您能否阐明您的预期输出是究竟应该如何显示?
-
我删除了“需要删除”注释以避免混淆,我的输出应该是上面两个“路由”结构中的任何一个
标签: python pandas dataframe merge cartesian-product