请问这里面的 “,”in key 是个啥?还有就是这个报错该怎么改呢,报错位置在倒数第二行,希望得到回复,提前感谢帮忙的da佬!
#1读取类型csv
typelist = []
for root,dirs,files in os.walk(csv_path,topdown=False):
for file in files:
if file.endswith(".csv"):
filename_path=os.path.join(root,file)
typelist.append(filename_path)
"""typelist = []
for i in filelist:
if "类型csv" in i and i.endswith(".csv") :
typelist.append(i)
typelist = list(set(typelist))
try:
typelist.sort(key = lambda x:int(x.split("\\")[-1].split(".")[3]))
except:
typelist.sort(key = lambda x:int(x[:-4].split("\\")[-1].split("-")[2]))
"""
total_data = {}
#类型csv - 各项数据
f=open("大区.txt", 'r')
大区 = eval(f.read())
f=open("小区.txt", 'r')
小区 = eval(f.read())
f=open("大小区外接矩形.txt")
exec(f.read())
for i in typelist:
#print(i)
key = i.split("\\")[-1]
total_data[key] = {}
df = pd.read_csv(i,engine = "python")
pointlist = [(df["tb"][ii],df["E_sum"][ii]) for ii in range(len(df))]
#2 计算亚群系相关数据:表里的第一第二、倒数第一第二列
counter = {}
for point in pointlist:
area = 获得亚群系(point)
if area in counter:
counter[area] += 1
else:
counter[area] = 1
亚群系名,主导区,主导区占比,statu = 获得亚群系相关的四列数据(counter)
total_data[key]["亚群系相关"] = {
"亚群系": 亚群系名,
"主导区": 主导区,
"群丛状态": statu ,
"主导区占比": 主导区占比
}
#3 群丛组、亚群丛组
xy = [(df["XX"][ii],df["YY"][ii]) for ii in range(len(df))]
c1,c2 = 获得大小区分区(xy)
total_data[key]["植被区相关"] = {
"大区": c1,
"小区": c2,
}
#4 六边形图
counter = {}
for point in pointlist:
area = 获得六边形分区(point)
if area in counter:
counter[area] += 1
else:
counter[area] = 1
六边形分区,主导区,主导区占比,statu = 获得六边形图相关的四列数据(counter)
total_data[key]["六边形图相关"] = {
"六边形分区": 六边形分区,
"主导区": 主导区,
"群丛状态": statu ,
"主导区占比": 主导区占比
}
l = []
for i in total_data:
l.append([total_data[i]["亚群系相关"]["亚群系"],total_data[i]["亚群系相关"]["主导区"],total_data[i]["植被区相关"]["大区"],total_data[i]["植被区相关"]["小区"],i[:-4],total_data[i]["亚群系相关"]["群丛状态"],total_data[i]["亚群系相关"]["主导区占比"]])
def grade(key):
mark = 0
if "," in key: mark += 99999999
def getcode(一节):
for i in "P,B,CT,WT,ST,T,ERROR".split(","):
if 一节.startswith(i):
return 10**"P,B,CT,WT,ST,T,ERROR".split(",").index(i) + int(一节.split("-")[-1])
break
return [int(","in key)]+[getcode(i) for i in key.split(",")]
l.sort(key = lambda x : [["稳态","单亚稳态","双亚稳态","混沌态"].index(x[-2])]+grade(x[0])+grade(x[1]) + [int(x[2]),int(x[3]),-float(x[6].split(",")[0][:-1])])
int(x[2])
int(x[3])
这里其中某个不是数字
def grade中的def getcode中的return那句:10**"..."这个写法就很离谱,**表示阶乘,但你这个后面给整了个字符串。
参考 解决办法 https://www.pythonforbeginners.com/exceptions/valueerror-invalid-literal-for-int-with-base-10
不知道你这个问题是否已经解决, 如果还没有解决的话: