尝试填充 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()
最后,这是结果输出:
依我看,主要有两个问题:
- 代码未返回正确的 latitude/longitudes。
- 这非常低效,但我想不出更好的方法。
如有任何帮助,我们将不胜感激!
我会简单地使用 merge
执行左连接,正如您所说,除非出于非常具体的原因,否则不鼓励对数据帧使用 for 循环。我将使用的代码如下:
happiness_data = happiness_data.merge(country_cord_data,how='left',left_on='Country or region',right_on='name')
您需要一些 df 操作来删除旧列,但这应该足够了。
我正在尝试从一个 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()
最后,这是结果输出:
依我看,主要有两个问题:
- 代码未返回正确的 latitude/longitudes。
- 这非常低效,但我想不出更好的方法。
如有任何帮助,我们将不胜感激!
我会简单地使用 merge
执行左连接,正如您所说,除非出于非常具体的原因,否则不鼓励对数据帧使用 for 循环。我将使用的代码如下:
happiness_data = happiness_data.merge(country_cord_data,how='left',left_on='Country or region',right_on='name')
您需要一些 df 操作来删除旧列,但这应该足够了。