|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
import csv
import math
import pandas as pd
import os
cwd = os.getcwd()
read_path = '17050308'
# 读取文件夹
save_path = 'merge'
save_name = 'Modified.csv'
os.chdir(read_path)
#修改当前工作目录
csv_name_list = os.listdir()
#将所有文件名存入列表
df = pd.read_csv(csv_name_list[0])
#读取第一个CSV文件并包含表头,用于后续的csv文件拼接
df.to_csv( cwd + '\\' + save_path + '\\' + save_name , encoding="utf_8",index=False)
for i in range(1,19):
df = pd.read_csv(csv_name_list[i])
df.to_csv(cwd + '\\' + save_path + '\\' + save_name ,encoding="utf_8",index=False, header=False, mode='a+')
# 循环遍历列表中各个CSV文件名,并完成文件拼接
with open(r"C:\Users\鹏鹏\Desktop\12.15\merge\Modified.csv","r",encoding="utf-8")as f:
reader = csv.reader(f)
rows = [row for row in reader]
def distance(A,B,C,D):
#A,B为两点的经度,C,D为两点的纬度
R = 6378137.000
r = 6356752.314
s1 = ((math.cos(A) * (R - A * (R - r)/90) + math.cos(B) * (R - B * (R-r)/90))) * math.pi / 360 * (A-B)
#s1是经度
s2 = 111000 * (C - D)
#s2是纬度
s = math.sqrt( s1**2 + s2**2 )
#s是两点间距离
return s
Sum = 0
for j in range(1,len(rows)-1):
if rows[j][8] == 1 and rows[j+1][8] == 1:
A1 = float(rows[j][4])
B1 = float(rows[j][5])
A2 = float(rows[j+1][4])
B2 = float(rows[j+1][5])
re = distance(A1,A2,B1,B2)
Sum += re
#Sum是20辆车一天行驶的总路程
S = Sum / 50
print("日均载客路程:{}".format(S))
使用以上语句读取csv文件,为什么S为0? |
|