尝试填充 latitude/longitude 列时的所有 NaN 值

All NaN values when trying to fill latitude/longitude columns

我正在尝试从一个 DataFrame 解释 latitude/longitude 并将其放入另一个。但是,当我尝试这样做时,我最终在我的列中得到了所有 NaN 值。

我认为展示我的问题的最佳方式是展示一些代码!

首先,这是我的第一个 DataFrame,它被称为 happiness_data 以下代码提供以下输出:

happiness_data.head()

接下来,我还有一个叫country_coord_data。该帧的 .head() 给出了这个输出:

最后,这是我尝试更改幸福 DF 的纬度和经度列的代码。

country_names = happiness_data["Country or region"]
country_coord_data.loc[country_coord_data["name"] == "Finland"]["latitude"]

for country in country_names:
    for country2 in country_coord_data["name"]:
        if country==country2:
            happiness_data.loc[happiness_data["Country or region"] == country, "Latitude"] = country_coord_data.loc[country_coord_data["name"] == country, "latitude"]
            happiness_data.loc[happiness_data["Country or region"] == country, "Longitude"] = country_coord_data.loc[country_coord_data["name"] == country, "longitude"]
happiness.head()

最后,这是结果输出:

依我看,主要有两个问题:

  1. 代码未返回正确的 latitude/longitudes。
  2. 这非常低效,但我想不出更好的方法。

如有任何帮助,我们将不胜感激!

我会简单地使用 merge 执行左连接,正如您所说,除非出于非常具体的原因,否则不鼓励对数据帧使用 for 循环。我将使用的代码如下:

happiness_data = happiness_data.merge(country_cord_data,how='left',left_on='Country or region',right_on='name')

您需要一些 df 操作来删除旧列,但这应该足够了。