Я написал код, который читает из данного набора данных и преобразует весь текстовый файл в кадр данных pandas (после некоторой предварительной обработки)
- Широты представляют строки и присутствуют в списке.
- Долготы представляют столбцы и представлены в отдельном списке.
Теперь я хочу создать меньший фрейм данных из исходного, который я создал (чтобы было проще понимать и интерпретировать данные) и выполнять вычисления. Для этого я создал столбец меньшего размера размером 18, пропустив каждые 10 элементов. Это работало нормально. Давайте назовем этот новый столбец как new_column.
Теперь я хочу перебрать каждую строку и для каждого значения строки k и new_column j добавить ее в новую матрицу или фрейм данных.
Например, если строка 10 и new_column 12 имеют значение «x», я хочу добавить это «x» в той же позиции, но в новом кадре данных (или матрице).
Я написал следующий код, но я не знаю, как выполнить эту часть, которая позволяет мне делать выше.
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
from scipy import interpolate
# open the file for reading
dataset = open("Aug-2016-potential-temperature-180x188.txt", "r+")
# read the file linewise
buffer = dataset.readlines()
# pre-process the data to get the columns
column = buffer[8]
column = column[3 : -1]
# get the longitudes as features
features = column.split("\t")
# convert the features to float data-type
longitude = []
for i in features:
if "W" in features:
longitude.append(-float(i[:-1])) # append -ve sign if "W", drop the "W" symbol
else:
longitude.append(float(i[:-1])) # append +ve sign if "E", drop the "E" symbol
# append the longitude as columns to the dataframe
df = pd.DataFrame(columns = longitude)
# convert the rows into float data-type
latitude = []
for i in buffer[9:]:
i = i[:-1]
i = i.split("\t")
if i[0] != "":
if "S" in i[0]: # if the first entry in the row is not null/blank
latitude.append(-float(i[0][:-1])) # append it to latitude list; append -ve for for "S"
df.loc[-float(i[0][:-1])] = i[1:] # add the row to the data frame; append -ve for "S" and drop the symbol
else:
latitude.append(float(i[0][:-1]))
df.loc[-float(i[0][:-1])] = i[1:]
print(df.head(5))
temp_col = []
temp_row = []
temp_list = []
temp_col = longitude[0 : ((len(longitude) + 1)) : 10]
for iter1 in temp_col:
for iter2 in latitude:
print(df.loc[iter2])
Я также предоставляю ссылку на набор данных здесь
(Загрузите файл, заканчивающийся на .txt и запустите код из того же каталога, что и файл .txt)
Я новичок в numpy, pandas и python, и написание этого небольшого куска кода стало для меня огромной задачей. Было бы здорово, если бы я мог получить некоторую помощь в этом отношении.