代码之家  ›  专栏  ›  技术社区  ›  user2727704

熊猫-在CSV文件的不同列中找到相同值的更快方法?

  •  1
  • user2727704  · 技术社区  · 6 年前

    我需要找到CSV输入文件中引用了循环的行,如:

    start,end,weather
    california,arizona,hot
    colorado,kansas,cold
    arizona,california,hot
    

    上面应该检测到第一行和第三行是循环引用。我正在将csv加载到数据库中,并运行一个自连接查询以确定数据具有循环引用。但是想看看是否有任何方法可以使用Python Pandas来处理这个问题。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Charles R    6 年前

    可以筛选df.end Serie中包含df.start Serie值的行。然后应用第二个过滤器获取df.end Serie的值包含在df.start Serie中的行:

    df = df.loc[df.start.isin(df.end),:]
    df = df.loc[df.end.isin(df.start),:]
    df["way"] = df.apply(lambda x: sorted([x["start"], x["end"]]), axis=1)
    print(df)
    

    输出将给出第0行和第2行。