任何人都可以帮助我了解我要去哪里了吗?
import os
import numpy as np
import pandas as pd
ctr_x = []
tl_list = []
df = pd.read_csv('ring_1_05_sam.csv')
ctr_x = df.iloc[8:12, 0:1]
ctr_y = df.iloc[8:12, 1:2]
ctr_x = (ctr_x.to_string(index=False, header=False))
ctr_y = (ctr_y.to_string(index=False, header=False))
tl_list.append((str(ctr_x - 30),str(ctr_y - 30)))
print(tl_list)
我得到一个错误:
Traceback (most recent call last):
File "annotation.py", line 9, in <module>
tl_list.append((str(ctr_x - 30),str(ctr_y - 30)))
TypeError: unsupported operand type(s) for -: 'str' and 'int'
如评论中所述:
我正在尝试将每个值减去30,然后存储在tl_list[]
中。
答案 0 :(得分:1)
我正在尝试将每个值减去30,然后存储在tl_list []中。
字符串转换会分散注意力,而且不必要。您也不需要显式实例化并追加到列表。请改用pd.Series.tolist
:
res_x = (df.iloc[8:12, 0] - 30).tolist()
res_y = (df.iloc[8:12, 1] - 30).tolist()
res = [res_x, res_y]
或者合并您的操作并使用np.ndarray.tolist
:
res = (df.iloc[8:12, 0:2] - 30).values.tolist()
答案 1 :(得分:0)
免责声明:以下解决方案尚未经过测试。
你可以
ctr_x = df.iloc[8:12, 0:1] - 30 ## subtracts each element by 30
ctr_y = df.iloc[8:12, 1:2] - 30 ## ditto
ctr_x = (ctr_x.to_string(index=False, header=False))
ctr_y = (ctr_y.to_string(index=False, header=False))
tl_list.append((ctr_x, ctr_y)) ## appends [tuple of] string[s]
ctr_x = (ctr_x.to_string(index=False, header=False))
此行将使ctr_x
为字符串,因此其类型为 str
。
该位导致错误:
ctr_x - 30
为什么?简单地说,因为您不能从字符串中减去(aka,因此您不能使用减操作数)。相反,您可以使用
int(ctr_x) - 30
这首先将ctr_x
强制转换为整数,然后然后允许您使用减号。
一些旁注:
您在代码顶部附近声明了ctr_x = []
,但似乎没有在其中使用任何列表功能。