У меня есть файл .csv с двумя столбцами, содержащий такие числа, как:
20 12 24.2312, 12 12 23.312
12 15 26,123, 52 12 12,772
...
...
И т.п.
Я хочу преобразовать эти значения с помощью функции
data=pd.read_csv("test2.csv")
def deg(s): #takes H:M:S, returns S
c = str(s).split()
# 0: hour, 1: min, 2: sec
v = float(c[0]) + float(c[1])/60 + float(c[2])/3600 #convert all to H
return v*15 #convert to rad"""
for obj in range(len(data)):
rss=(deg(obj[0]),deg(obj[1]))
degres.append(rss)
Однако я получаю сообщение об ошибке «объект int не подлежит подписке». Как я могу делать то, что хочу?
2 ответа
Во-первых, поскольку вы показали, что данные не содержат заголовка, вы должны сказать это read_csv
:
data=pd.read_csv("test2.csv", header=None)
Далее, поскольку вы хотите применить одну и ту же скалярную функцию ко всем ячейкам вашего фрейма данных, простой способ — преобразовать ее столбец за столбцом с помощью методов pandas:
result = data.transform(lambda s: s.transform(deg))
Из ваших данных примера это дает
0 1
0 303.100963 183.097133
1 183.858846 783.053217
В вашем случае obj на самом деле является целым числом: 0, 1, .... Чтобы получить доступ к числам из ячеек, вам нужно сделать так.
import pandas as pd
data=pd.read_csv("test2.csv", header = None)
print(data)
def deg(s): #takes H:M:S, returns S
c = str(s).split()
# 0: hour, 1: min, 2: sec
v = float(c[0]) + float(c[1])/60 + float(c[2])/3600 #convert all to H
return v*15 #convert to rad"""
degres = []
for i in range(len(data)):
obj = data[i]
rss=(deg(obj[0]),deg(obj[1]))
degres.append(rss)
print(degres)
Скорее всего, есть другие способы написать его в стиле pandas/dataframe.
Новые вопросы
python
Python - это многопарадигмальный, динамически типизированный, многоцелевой язык программирования. Он разработан для быстрого изучения, понимания и использования, а также для обеспечения чистого и единообразного синтаксиса. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Тем не менее, для вопросов о Python, связанных с версией, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas и NumPy) включите его в теги.