【问题标题】:Trying to achieve join / vlookup in Python Pandas (Updated)尝试在 Python Pandas 中实现 join / vlookup(更新)
【发布时间】:2020-10-01 15:55:36
【问题描述】:

免责声明:我是 SO 和 Python 的新手。

我正在尝试将我的 SQL 左连接查询转换为 python。

示例:

df1 是一个数据框,其中包含以下列:城市、事件、日期

df2:城市、邮政编码、州、国家等

SQL:

SELECT Events.City, Events.Event, Events.Date, Masterlist.State, Masterlist.Country, Masterlist.[Zip Code]
FROM Events LEFT JOIN Masterlist ON Events.City = Masterlist.City

Python:

df1 = pd.read_csv('Events.csv')

df2 = pd.read_csv('Masterlist.csv')

df3 = df1.join(df2, how='left')

df3 输出:

City, Event, date, Zip Code, State, Country

Fremont, Charity, 6/11, 99999, CA, US

Oakland, Protest, 6/11, 99998, CA, US

Fremont, Concert, 6/12, null, null, null

Oakland, Concert, 6/12, null, null, null

理想的输出是它引用 df2 并返回基于 City 的值。它目前只返回该 City 的第一个找到的值。如何让它为每个行项填充其各自的州、邮政编码和国家/地区?

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    您没有指定,我相信以下方法有效:

    import pandas as pd
    
    
    df1 = pd.DataFrame({'City':["Tucson","Tucson","Portland","San Diego"], 
                        "Event":[1,5,3,2], 
                         "date":[1,2,3,4]})
    df2 = pd.DataFrame({"City":["San Diego", "Tucson", "Portland"], 
                        "zip":[1,2,3], "state":["CA", "AZ", "OR"], 
                        "country":["USA","USA","USA"]})
    pd.merge(df1,df2, how="left", on="City")
    

    最好也提供一个最小的数据集(就像我在上面所做的那样),以便人们可以轻松地与您合作并帮助您。

    【讨论】:

      猜你喜欢
      • 2014-10-19
      • 2017-02-19
      • 2021-07-14
      • 2012-08-14
      • 2022-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多