python - Pandas 以关联的字符串值将列添加到新数据框?
问题描述
我正在尝试将一列从一个数据框添加到另一个数据框,
df.head()
street_map2[["PRE_DIR","ST_NAME","ST_TYPE","STREET_ID"]].head()
这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['STREET'].str in street_map2["ST_NAME"].str
. 谁能想到一个好的方法来做到这一点?(请注意,它不需要 100% 准确,只需获得最多,它可能与上面尝试的方法完全不同)
编辑感谢到目前为止所有尝试过的人,我还没有解决问题。这里还有一些数据,
street_map2["ST_NAME"]
我已经按照建议尝试了这种方法,但仍然存在一些索引问题,
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"]
这会引发此错误,
如果有帮助,数据帧的长度不同。任何更多的想法或解决上述问题的方法将不胜感激。
解决方案
为此,您需要合并这些数据框。一种方法是:
df.merge(street_map2, left_on='STREET', right_on='ST_NAME')
这将做的是:它将在ST_NAME
和STREET
列中查找相等的值,并用来自两个数据帧的其他列的值填充行。
检查此链接以获取更多信息:https ://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.merge.html
此外,您尝试合并的列上的字符串必须完全匹配(包括大小写)。
推荐阅读
- javascript - ChartJS:获取单个值减去自定义图例中的另一个值
- vue.js - Vue.js:如何从父组件对子组件进行本机事件处理
- android - mydatabase 未在房间数据库中创建
- python - 如何编写一个迭代函数,使用 for 循环计算返回 1 + 3 + .... + (2n - 1) 的前 n 个奇数之和?
- android - 我可以在android上执行简单的除法和乘法吗
- android - 为什么微调器活动没有运行?错误:不幸的是 spinnerapp 已停止
- android - 在项目结构中未显示开发人员服务
- javascript - 更新用户输入和异步服务器端 API 调用的输出
- java - 如何将流收集到 TreeMap
- php - 从 download_script.php 链接将 zip 文件夹下载到服务器