【发布时间】:2020-08-03 23:28:54
【问题描述】:
假设我有一个如下所示的 csv
+-----+-----------+---------+
| ID | state | city |
+-----+-----------+---------+
| 101 | READY | |
| 101 | DELIVERED | NEWYORK |
| 101 | DELIVERED | LONDON |
| 102 | READY | |
| 102 | DELIVERED | LONDON |
| 103 | READY | |
| 103 | DELIVERED | NEWYORK |
| 104 | READY | |
| 104 | DELIVERED | TOKYO |
| 104 | DELIVERED | PARIS |
| 105 | DELIVERED | NEWYORK |
+-----+-----------+---------+
现在我想要状态为READY 的ID,其中DELIVERED 为NEWYORK。
- 相同的 ID 将多次出现在不同的州和城市。
-
READY 的
city始终为空 -
DELIVERED 的
city总是会有一些值。
所以首先我想检查列city 的值是否已交付state。如果是 NEWYORK,则取该 ID 的 READY 行。如果没有READY 行,那么我们可以忽略(本例中为ID 105)
预期输出
+-----+-----------+---------+
| ID | state | city |
+-----+-----------+---------+
| 101 | READY | |
| 103 | READY | |
+-----+-----------+---------+
我尝试在 pandas 中使用自加入。但我不知道如何进一步进行,因为我是 python 新手。目前我正在 SQL 中执行此操作。
import pandas as pd
mydata = pd.read_csv('C:/Mypython/Newyork',encoding = "ISO-8859-1")
NY = pd.merge(mydata,mydata,left_on='ID',right_on='ID',how='inner')
【问题讨论】: