自动将TXT保存为CSV Python
我感兴趣的是剪切数据集,然后按照名称模式自动保存数据集(例如:block1.csv、block2.csv…) 现在我正在手动操作,我的代码是:自动将TXT保存为CSV Python,python,pandas,numpy,tkinter,geopandas,Python,Pandas,Numpy,Tkinter,Geopandas,我感兴趣的是剪切数据集,然后按照名称模式自动保存数据集(例如:block1.csv、block2.csv…) 现在我正在手动操作,我的代码是: import csv import tkinter as tk from tkinter import filedialog import numpy as np import pandas as pd import geopandas as gpd from geopandas import GeoSeries from shapely.geomet
import csv
import tkinter as tk
from tkinter import filedialog
import numpy as np
import pandas as pd
import geopandas as gpd
from geopandas import GeoSeries
from shapely.geometry import Polygon
from shapely.geometry import Point
root= tk.Tk()
canvas1 = tk.Canvas(root, width = 400, height = 400, bg = 'gray1', relief = 'raised')
canvas1.pack()
#--------------START---IMPORT-------------------
def getCSV ():
global df
import_file_path = filedialog.askopenfilename()
df = np.genfromtxt(import_file_path, delimiter='_', missing_values = ' ', filling_values = None)
print (df)
browseButton_CSV = tk.Button(text=" Import CSV File to clip ", command=getCSV, bg='OrangeRed4', fg='black', font=('helvetica', 12, 'bold'))
canvas1.create_window(200, 200, window=browseButton_CSV)
root.mainloop()
#--------------END---IMPORT------------------------------------
x, y, z, mag = df[:,0], df[:,1], df[:,2], df[:,3]
xmin, ymin = np.min(x), np.min(y)
xmax, ymax = np.max(x), np.max(y)
dtSeries = GeoSeries(map(Point, zip(x,y,z,mag)))
def clipping( x, y, z, mag, xc, yc):
df1 = pd.DataFrame({'X':x, 'Y':y, 'Z':z, 'MAG':mag})
df1['geometry'] = list(zip(df1['X'], df1['Y'], df1['Z']))
df1['geometry'] = df1['geometry'].apply(Point)
gdfMAGN = gpd.GeoDataFrame(df1, geometry='geometry')
x1, y1 = xc, yc
# ____________[90000m X 90000m] IS THE WINDOW DIMENSIONS______________
clipAr = Polygon([ (x1, y1), (x1, y1+90000), (x1 + 90000, y1 + 90000), (x1+90000, y1)])
pol = gpd.GeoDataFrame([1], geometry=[clipAr] )
res = gpd.clip(gdfMAGN, pol)
resCSV = np.array([res['X'],res['Y'],res['Z'],res['MAG']]).T
#---------------------START---SAVE---------------------
root= tk.Tk()
canvas1 = tk.Canvas(root, width = 300, height = 300, bg = 'gray1', relief = 'raised')
canvas1.pack()
def saveCSV ():
global df
export_file_path = filedialog.asksaveasfilename( defaultextension=".csv", filetypes=[("CSV files", '*.csv')])
np.savetxt(export_file_path, resCSV, delimiter='_')
browseButton_CSV = tk.Button(text=" Export filled CSV Data File ", command=saveCSV, bg='OrangeRed4', fg='black', font=('helvetica', 12, 'bold'))
canvas1.create_window(150, 150, window=browseButton_CSV)
root.mainloop()
#------------------------END---SAVE--------------------
xc, yc = np.min(x), np.min(y)
while True:
#---------45000m IS THE STEP -----------------------
if xc = np.max(x):
if yc = np.max(y):
clipping(x, y, z, mag, xc, yc)
break
else:
xc = xmin
yc = yc + 45000
else:
clipping(x, y, z, mag, xc, yc)
xc = xc + 45000
为了使用我演示的模式名称自动保存结果,我添加了以下代码行并删除了saveCSV()。我只保留了np.savetxt(..)。使用它们,我得到一个路径作为输入,从中删除最后一部分,然后得到文件路径
#-------------------START---------GET PATH---------------------------
root= tk.Tk()
canvas1 = tk.Canvas(root, width = 300, height = 300, bg = 'gray1', relief = 'raised')
canvas1.pack()
def getPath ():
global path
path = filedialog.asksaveasfilename( defaultextension=".txt", filetypes=[("TXT files", '*.txt')])
print(path)
browseButton_CSV = tk.Button(text=" Set PATH ", command=getPath, bg='OrangeRed4', fg='black', font=('helvetica', 12, 'bold'))
canvas1.create_window(150, 150, window=browseButton_CSV)
root.mainloop()
#--------------------END-------GET PATH---------------------------------------------
print(path)
strin = np.array([])
for i in path:
strin=np.append(strin, i)
ind = np.where(strin=="/" )
j = str()
for i in path[0:(ind[0][len(ind[0])-1]+1)]:
j += i
path = j
print(path)
我还在clipping()中添加了2个额外的变量path和block以及下面的代码行,以创建每个csv的路径和名称
pathBlock = path + 'block' + str(bl) + '.csv'
np.savetxt(pathBlock, resCSV, delimiter='_')
我想用一个名字模式自动保存结果,就像我说的,你可能不明白。。。我询问是否有人知道自动保存csv的方法。我没有收到任何错误,因为我使用tkinter和numpy.savetxt手动保存数据集{请参阅我上传的代码}。我没有任何代码试图自动保存,因为我不知道怎么做