如果一个数据帧中的值存在于另一数据帧中,则Pandas将赋值



所以,我有两个数据帧。一个有位置列表(国家和城市(,另一个有带有相应信息的位置(例如坐标(。

第一个,我们的数据:我们的数据

第二个,数据库:db

我想检查our_data中的国家是否存在于dbcommon。问题是,国家是从Twitter上刮来的,而且很乱,所以基本上我想检查字符串中是否有任何单词对应于另一个数据帧中的公共数据集。此外,如果存在匹配,我希望将db中的telatlng保存为our_data的另一列。

到目前为止,我尝试过以某种方式迭代列,但大多没有成功(这是我第一次使用Pandas,我正在做一个推特抓取器,想为每条推特绘制地图(。我得到的结论是:

our_data = our_data.assign(test = our_data.countries.isin(db.common))

并得到这样的结果:结果

我试过

our_data = our_data.assign(test = db.latlng if (our_data.countries.isin(db.common)) else "False")

得到了这个错误:

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all()

我应该如何处理?

您需要一个左联接才能做到这一点:

import pandas as pd
result = pd.merge(our_data, db, how="left", left_on="countries", right_on="common")

您将得到一个包含5列的数据帧:countries、primary_location、common、latlng-capital1。如果未找到匹配项,则列common、latlng和capitala1包含NaN值。

相关内容

最新更新