Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x Python:将列表中的子元素打印到CSV_Python 3.x_Pandas_Data Structures - Fatal编程技术网

Python 3.x Python:将列表中的子元素打印到CSV

Python 3.x Python:将列表中的子元素打印到CSV,python-3.x,pandas,data-structures,Python 3.x,Pandas,Data Structures,我有一张gps坐标表。以下是这些坐标的格式。如果您愿意,这是路线0,它表示驾驶员访问的位置。他从('24.957055','-8.740156')开始,到('34.956915136264','-10.753690062122')并返回('24.957055','-8.740156') 我想创建一个数据结构,其中每个坐标根据它们是起点、终点还是仅仅是中间点进行分类 注:起点、终点=相同的,即驾驶员始终返回基地 路由0的所需输出: Start, way_point_1, End ('24.9570

我有一张gps坐标表。以下是这些坐标的格式。如果您愿意,这是路线0,它表示驾驶员访问的位置。他从('24.957055','-8.740156')开始,到('34.956915136264','-10.753690062122')并返回('24.957055','-8.740156')

我想创建一个数据结构,其中每个坐标根据它们是起点、终点还是仅仅是中间点进行分类

注:起点、终点=相同的,即驾驶员始终返回基地

路由0的所需输出:

Start, way_point_1, End
('24.957055', ' -8.740156'), ('34.956915136264', ' -10.753690062122'), ('24.957055', ' -8.740156')
我拥有的坐标列表要长得多,我希望能够循环浏览完整的列表,并确定坐标是起点、终点还是中间点


编辑:假设我理解你的问题,其中一些路线将有超过1个中间点

应该足够简单。让我们假设以下列表:

route0 = [[('24.957055', ' -8.740156'),
('34.956915136264', ' -10.753690062122'),
('36.956915136264', ' -6.753690062122'),
('66.956915136264', ' -12.753690062122'),
('24.957055', ' -8.740156')], [('48.957055', ' -16.740156'),
('68.956915136264', ' -20.753690062122'),
('48.957055', ' -16.740156')]]
您只需要一个简单的for循环:

for i in range(len(route0)):
    print(f'List Element: {i}\nstart: {route0[i][0]}\nEnd: {route0[i][-1]}\nIntermediary: {route0[i][1:-1]}\n')
输出:

List Element: 0
start: ('24.957055', ' -8.740156')
End: ('24.957055', ' -8.740156')
Intermediary: [('34.956915136264', ' -10.753690062122'), ('36.956915136264', ' -6.753690062122'), ('66.956915136264', ' -12.753690062122')]

List Element: 1
start: ('48.957055', ' -16.740156')
End: ('48.957055', ' -16.740156')
Intermediary: [('68.956915136264', ' -20.753690062122')]
无论你想做什么,总体思路都是一样的:

route0[0][0] # looks at the first list and takes the first element
route0[0][-1] # looks at the first list and takes the last element
route0[0][1:-1] # looks at the first list and takes all the middle elements
要使用熊猫创建csv,请执行以下操作:

data = []

for i in range(len(route0)):
    s = route0[i][0]
    m = str(route0[i][1:-1]).replace('[','').replace(']','')
    e = route0[i][-1]
    data.append([s,m,e])

df = pd.DataFrame(data, columns=['Start', 'Intermediary', 'End'])
df.to_csv('file_name.csv')
要使用csv创建csv,请执行以下操作:

import csv

data = []

for i in range(len(route0)):
    s = route0[i][0]
    m = str(route0[i][1:-1]).replace('[','').replace(']','') #route0[i][1:-1]
    e = route0[i][-1]
    data.append([s,m,e])

with open('test.csv', 'w', newline='') as f:
    writer = csv.writer(f)
    headers = ['Start', 'Intermediary', 'End']
    writer.writerow(headers)
    writer.writerows(data)

非常感谢。f弦在这里对我有很大的帮助。我发现了数据分析的世界,这对我是一个很大的帮助。我说我是在处理列表中的列表还是“列表列表”是对的?
import csv

data = []

for i in range(len(route0)):
    s = route0[i][0]
    m = str(route0[i][1:-1]).replace('[','').replace(']','') #route0[i][1:-1]
    e = route0[i][-1]
    data.append([s,m,e])

with open('test.csv', 'w', newline='') as f:
    writer = csv.writer(f)
    headers = ['Start', 'Intermediary', 'End']
    writer.writerow(headers)
    writer.writerows(data)