【发布时间】:2020-08-23 05:13:15
【问题描述】:
我将一系列 csv 文件作为数据框进行迭代,最终将它们全部写入一个通用的 excel 工作簿。
在众多文件之一中,十进制 GPS 值(纬度、经度)分为两列(df[4] 和 df[5]),我将其转换为度-分-秒。该方法返回一个元组,我试图将其停放在原始数据帧同一行中的两个名为 dmslat 和 dmslon 的新字段中:
def convert_dd_to_dms(lat, lon):
# does the math here
return dmslat, dmslon
csv_dir = askdirectory() # tkinter directory picker
os.chdir(csv_dir)
for f in glob.iglob("*.csv"):
(csv_path, csv_name) = os.path.split(f)
(csv_prefix, csv_ext) = os.path.splitext(csv_name)
if csv_prefix[-3:] == "loc":
df = pd.read_csv(f)
df['dmslat'] = None
df['dmslon'] = None
for i, row in df.iterrows():
fixed_coords = convert_dd_to_dms(row[4], row[5])
row['dmslat'] = fixed_coords[0]
row['dmslon'] = fixed_coords[1]
print(df)
# process the other files
因此,当我使用 print() 语句时,我可以看到坐标已正确计算,但它们并未提交给 dmslat/dmslon 字段。
我也尝试在行迭代器中分配新字段,但由于我处于行规模,它最终每次都会用新的计算值覆盖整个列。
如何让结果(简洁地)填充列?
【问题讨论】:
标签: python python-3.x pandas