gpt4 book ai didi

python - 根据自定义条件过滤 csv 中的行

转载 作者:行者123 更新时间:2023-12-02 02:43:10 26 4
gpt4 key购买 nike

假设我有一个如下所示的 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,其中 DELIVEREDNEWYORK

  • 同一 ID 在不同的州和城市会出现多次。
  • READYcity 始终为空
  • DELIVEREDcity 始终会有一些值。

所以首先我想检查 DELIVERED statecity 列的值。如果是 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')

最佳答案

让我们尝试使用 groupby().transform() 来识别那些带有 NEWYORK 的内容,然后使用 bool 索引:

has_NY = df['city'].eq('NEWYORK').groupby(df['ID']).transform('any')

mask = df['state'].eq('READY') & has_NY

df[mask]

输出:

    ID  state  city
0 101 READY None
5 103 READY None

关于python - 根据自定义条件过滤 csv 中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63232115/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com