如何从Pandas DataFrame单列提取两个值并生成独立列表?
拆分Pandas DataFrame中包含坐标的Position列
原始CSV数据
Timestamp, UTC, id, loc, spd 001, 12z, q20, "52, 13", 320 002, 13z, a32, "53, 12", 321 003, 14z, q32, "54, 11", 321 004, 15z, a43, "55, 10", 330
原代码优化点说明
原读取代码有两处可优化:
- 手动跳过首行再设置列名的方式冗余,直接利用
pd.read_csv默认表头读取更简洁 spd = ["Speed"]是创建字符串列表,而非提取数据列,应改为spd = data["Speed"]
实现拆分的完整代码
import pandas as pd fname = "data.csv" # 读取CSV并调整列名匹配需求 data = pd.read_csv(fname).rename(columns={ "id": "Callsign", "loc": "Position", "spd": "Speed" }) # 拆分Position列:按", "分割为两列,转为整数类型 lat_lon = data["Position"].str.split(", ", expand=True) data["Latitude"] = lat_lon[0].astype(int) data["Longitude"] = lat_lon[1].astype(int) # 提取为目标列表 latitude = data["Latitude"].tolist() longitude = data["Longitude"].tolist() # 验证输出 print(latitude) # [52, 53, 54, 55] print(longitude) # [13, 12, 11, 10]
关键步骤解释
str.split(", ", expand=True):将Position列的每个字符串按,分割,自动生成两个新列,对应纬度和经度的字符串值astype(int):将分割后的字符串转为整数类型,匹配示例中的数值格式tolist():将DataFrame列数据转换为Python原生列表,满足需求
内容的提问来源于stack exchange,提问作者thereiswaldo
相关产品推荐
相关产品推荐

