gpt4 book ai didi

python - Pandas 在关联的字符串值处将列添加到新数据框?

转载 作者:太空宇宙 更新时间:2023-11-04 11:08:23 24 4
gpt4 key购买 nike

我正在尝试将一个列从一个数据框添加到另一个数据框中,

df.head()

enter image description here

street_map2[["PRE_DIR","ST_NAME","ST_TYPE","STREET_ID"]].head()

enter image description here

PRE_DIR 只是街道名称的前缀。我想要做的是将相关街道的列 STREET_ID 添加到 df。我尝试了几种方法,但我对 Pandas 和字符串比较的经验不足,

street_map2['STREET'] = df["STREET"]
street_map2['STREET'] = np.where(street_map2['STREET'] == street_map2["ST_NAME"])

上面的代码显示了“ValueError:值的长度与索引的长度不匹配”。我也试过在 street_map2["ST_NAME"].str 中使用 street_map2['STREET'].str。谁能想到一个好方法来做到这一点? (请注意,它不需要 100% 准确,只需获取最多,它可以与上面尝试的方法完全不同)

编辑 感谢所有尝试过的人,到目前为止我还没有解决问题。这里还有一些数据,

street_map2["ST_NAME"]

enter image description here

我已经按照建议尝试了这种方法,但仍然存在一些索引问题,

def get_street_id(street_name):
return street_map2[street_map2['ST_NAME'].isin(df["STREET"])].iloc[0].ST_NAME

df["STREET_ID"] = df["STREET"].map(get_street_id)
df["STREET_ID"]

这会抛出这个错误,

enter image description here

如果它有助于数据帧的长度不相同。任何更多的想法或解决上述问题的方法将不胜感激。

最佳答案

为此,您需要合并这些数据框。一种方法是:

df.merge(street_map2, left_on='STREET', right_on='ST_NAME')

这将做的是:它将在 ST_NAMESTREET 列中寻找相等的值,并用来自两个数据帧的其他列的值填充行。

查看此链接以获取更多信息:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.merge.html

此外,您尝试合并的列上的字符串必须完全匹配(包括大小写)。

关于python - Pandas 在关联的字符串值处将列添加到新数据框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58868641/

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