-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathScriptToExtract.py
More file actions
65 lines (47 loc) · 1.61 KB
/
Copy pathScriptToExtract.py
File metadata and controls
65 lines (47 loc) · 1.61 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
import csv
def read_last_n_entries(csv_file, n):
data = []
with open(csv_file, 'r', newline='', encoding='utf-8') as file:
reader = csv.DictReader(file)
total_rows = sum(1 for row in reader)
file.seek(0) # Reset file pointer
# Skip header
next(reader)
# Calculate starting row index
start_row = max(0, total_rows - n)
# Skip to starting row
for _ in range(start_row):
next(reader)
# Read remaining rows
for row in reader:
data.append(row)
return data
csv_file_path = './data.csv'
last_300000_entries = read_last_n_entries(csv_file_path, 1000000)
for entry in last_300000_entries:
del entry['latitude']
del entry['longitude']
del entry['elevation']
del entry['status']
field1_data = []
field2_data = []
for entry in last_300000_entries:
if entry['field1'] == '':
field2_data.append(entry)
elif entry['field2'] == '':
field1_data.append(entry)
# remove field1 key from field2_data and field2 key from field1_data
for entry in field2_data:
del entry['field1']
for entry in field1_data:
del entry['field2']
# Write the filtered data to new CSV files
field1_file = 'WM4_data.csv'
field2_file = 'WM3_data.csv'
def write_data_to_csv(data, csv_file):
with open(csv_file, 'w', newline='', encoding='utf-8') as file:
writer = csv.DictWriter(file, fieldnames=data[0].keys())
writer.writeheader()
writer.writerows(data)
write_data_to_csv(field1_data, field1_file)
write_data_to_csv(field2_data, field2_file)