【问题标题】:How can I concatenate two integer columns inside pandas data frame?如何在熊猫数据框中连接两个整数列?
【发布时间】:2022-10-06 22:20:23
【问题描述】:

我正在尝试结合经度和纬度列,以便可以使用 GeoPandas 绘制我的点。我尝试使用以下方法连接整数:

df3[\'Location\'] = df3[\'latitude\'].astype(str) + \' \' +      df3[\'longitude\'].astype(str)

但我收到以下错误:

序列项 0:预期的 str 实例,找到浮点数

我相信这是因为该函数只接受字符串。

df3 = pd.DataFrame({\'ID\':[\'1\',\'2\',\'3\'], \'latitude\': [42.14267,42.131203,42.131638], \'longitude\':[-76.902040,-76.917860,-76.822420]})

这是我现在的数据框

 ID  latitude       longitude    
0  1      42.142677  -76.902040   
1  2      42.131203  -76.917860   
2  3      42.131638  -76.822420   

但是,我希望我的数据框看起来像这样。只是一个新列,每行显示经度和纬度坐标,用逗号分隔并用 括号。前任。 \'(42.142677,-76.902040)\'

  ID  latitude       longitude    location
0  1      42.142677  -76.902040   (42.142677,-76.902040)   
1  2      42.131203  -76.917860   (42.131203, -76.917860) 
2  3      42.131638  -76.822420   (42.131638,-76.822420)

注意:我很抱歉,由于某种原因,上面的表格格式不正确。

标签: python pandas dataframe geopandas data-extraction


【解决方案1】:

先将纬度和经度列都转换为字符串,然后再尝试连接:

df3["latitude"] = df3["latitude"].astype(str)
df3["longitude"] = df3["longitude"].astype(str)

df3["location"] = "(" + df3["latitude"] + ", " + df3["longitude"] + ")"

您也可以使用以下代码即时执行此操作:

df3["location"] = "(" + df3["latitude"].astype(str) + ", " + df3["longitude"].astype(str) + ")"

【讨论】:

  • 太感谢了!我正在努力弄清楚这一点。
【解决方案2】:

完全达到您的要求。两列作为字符串元组表示

import pandas as pd
import io

df = pd.read_csv(io.StringIO(""" ID  latitude       longitude    
0  1      42.142677  -76.902040   
1  2      42.131203  -76.917860   
2  3      42.131638  -76.822420"""), sep="\s+")

df["location"] = df.drop(columns=["ID"]).apply(tuple, axis=1).astype(str)

df
ID latitude longitude location
1 42.1427 -76.902 (42.142677, -76.90204)
2 42.1312 -76.9179 (42.131203, -76.91786)
3 42.1316 -76.8224 (42.131638, -76.82242)

对于绘图,这没有用。真的你想要几何

import geopandas as gpd

gdf = gpd.GeoDataFrame(df, geometry=gpd.points_from_xy(y=df["latitude"], x=df["longitude"]), crs="epsg:4386")

gdf.explore(marker_kwds={"radius":15}, height=300, width=400)

【讨论】:

    猜你喜欢
    • 2020-10-13
    • 2020-06-19
    • 2021-05-11
    • 2013-08-14
    • 2016-03-22
    • 2015-08-15
    • 2016-03-09
    • 1970-01-01
    相关资源
    最近更新 更多