根据数字位置将整数单元格拆分为两列,python

Split an integer cell into two columns based on digit location, python

我正在处理数以千计的 csv GPS 文件,我想在 GIS 软件中绘制这些文件。为此,我需要十进制度数,但数据是以十进制度数分钟为单位收集的。我有一个函数可以将十进制度分转换成我想要的格式,但是每个 csv 文件中的数据布局都需要操作。

Here is an image of the dataframe which requires manipulation。我希望第 0 列和第 2 列的格式是 57 10.7240 N 分为三列。由于 57 和 10 之间没有空格,并且小数点位于正确的位置,因此我正在努力寻找一种方法来拆分 7 位置的整数并将 57 作为数据帧中的新列插入。这可以手动完成,但我有超过 10,000 个 csv 文件,每个文件有 600 行是不可行的。

任何关于如何将整数从 5710.7242 拆分为 57 10.7242 N 的帮助都将不胜感激,因为这是我的代码在整个转换工作之前需要更正的最后一部分。

我的解决方案在迭代滥用方面不是很有效,但你可以试试这个:

import pandas as pd

data = [[5710.7240,'N',917.3222,'W'],[710.7239,'N',917.3225,'W']]
df = pd.DataFrame(data, columns=['L2','NS','L4','EW'])

split_L1, split_L2 = [],[]
for i, row in df.iterrows():
    split_L1.append(int(int(df['L2'][i])/100))
    split_L2.append(round(df['L2'][i]-split_L1[i]*100, 5))
df.insert(0,'L1',split_L1, True)
df['L2'] = split_L2

split_L3, split_L4 = [],[]
for i, row in df.iterrows():
    split_L3.append(int(int(df['L4'][i])/100))
    split_L4.append(round(df['L4'][i]-split_L3[i]*100, 5))
df.insert(3,'L3',split_L3, True)
df['L4'] = split_L4

df

输入:

输出: