为了账号安全,请及时绑定邮箱和手机立即绑定

获取一列中有向量的 csv c(,)

获取一列中有向量的 csv c(,)

冉冉说 2023-09-26 14:23:50
我使用 R 来准备数据,但我发现自己被迫使用 python。csv 文件已存储为 sf 数据框,其中列几何形状存储经度和纬度。在我的文件中,我有以下结构:a,geometry,b50,c(-95.11, 10.19),32.2460,,c(-95.12, 10.27),22.7970,c(-95.13, 10.28),14.9180,c(-95.14, 10.33),18.3590,c(-95.15, 10.5),28.3599,c(-95.16, 10.7),48.91这里的目的是在知道 c(-95.11, 10.19) 是 lon 和 lat 2 个值的情况下读取文件,以便它们可以存储在两个不同的列中。然而,将分隔符放在值内(也不是字符串)使得这真的很难做到。预期输出应该是:a,long,lat,b50,-95.11, 10.19,32.2460,,-95.12, 10.27,22.7970,-95.13, 10.28,14.9180,-95.14, 10.33,18.3590,-95.15, 10.5,28.3599,-95.16, 10.7,48.91
查看完整描述

2 回答

?
慕后森

TA贡献1802条经验 获得超5个赞

这是否有效(输入文件:data.csv;输出文件:data_out.csv):


import csv


with open('data.csv', 'r') as fin, open('data_out.csv', 'w') as fout:

    reader, writer = csv.reader(fin), csv.writer(fout)

    next(reader)

    writer.writerow(['a', 'long', 'lat', 'b'])

    for row in reader:

        row[1] = row[1][2:]

        row[2] = row[2][1:-1]

        writer.writerow(row)

在您的示例输出中,第二列之后是空白:这是有意的吗?,另外,您的示例输入在第一列之后的第二行中有一个双精度?


查看完整回答
反对 回复 2023-09-26
?
千万里不及你

TA贡献1784条经验 获得超9个赞

如果您正在寻找基于 R 的解决方案,您可以考虑将坐标从{sf}基于几何列提取到常规列中,并相应保存。


考虑这个例子,它建立在三个半随机的北卡罗来纳州城市上:


library(sf)

library(dplyr)


cities <- data.frame(name = c("Raleigh", "Greensboro", "Wilmington"),

                     x = c(-78.633333, -79.819444, -77.912222),

                     y = c(35.766667, 36.08, 34.223333)) %>% 

  st_as_sf(coords = c("x", "y"), crs = 4326)


cities # a class sf data.frame

Simple feature collection with 3 features and 1 field

geometry type:  POINT

dimension:      XY

bbox:           xmin: -79.81944 ymin: 34.22333 xmax: -77.91222 ymax: 36.08

geographic CRS: WGS 84

        name                   geometry

1    Raleigh POINT (-78.63333 35.76667)

2 Greensboro    POINT (-79.81944 36.08)

3 Wilmington POINT (-77.91222 34.22333)


mod_cit <- cities %>% 

  mutate(long = st_coordinates(.)[,1],

         lat = st_coordinates(.)[,2]) %>% 

  st_drop_geometry()


mod_cit # a regular data.frame

        name      long      lat

1    Raleigh -78.63333 35.76667

2 Greensboro -79.81944 36.08000

3 Wilmington -77.91222 34.22333


查看完整回答
反对 回复 2023-09-26
  • 2 回答
  • 0 关注
  • 58 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信