错误:列表索引必须是整数,而不是浮点';,u';发生在索引0处。Python3.x
尝试将教程应用于我自己的一些数据。教程链接: 我在[3]代码框中进行操作 当试图定义用于打印的颜色映射时,我遇到错误“TypeError:(‘列表索引必须是整数,而不是浮点’,u’出现在索引0’” 我已将代码粘贴到下面。提前感谢,错误:列表索引必须是整数,而不是浮点';,u';发生在索引0处。Python3.x,python,typeerror,Python,Typeerror,尝试将教程应用于我自己的一些数据。教程链接: 我在[3]代码框中进行操作 当试图定义用于打印的颜色映射时,我遇到错误“TypeError:(‘列表索引必须是整数,而不是浮点’,u’出现在索引0’” 我已将代码粘贴到下面。提前感谢, import pandas as pd # Load data data = pd.read_csv('BHPAND.csv') data.describe() data['BH'] = data['BH'].astype('category') data['FM
import pandas as pd
# Load data
data = pd.read_csv('BHPAND.csv')
data.describe()
data['BH'] = data['BH'].astype('category')
data['FM'] = data['FM'].astype('category')
data['SBTN'] = data['SBTN'].astype('category')
# Set names of Borehole UID's
data['BH'].unique()
# Define colours for facies based on SBTn
# 1=sensitive fine grained 2=organic clay 3=silty clay to clay
# 4=silt mixtures 5=sand mixtures 6=sands 7=gravelly sand
# 8=very stiff sand/clay sand 9=highly overconsolidated fine grained
sbtn_colours = ['#5E5E56', '#1E1E1C','#AAAA96','#788E6D',
'#C6C57D','#FFFC3F', '#AED6F1', '#BA4D2C', '#FF008C']
sbtn_labels = ['1', '2', '3', '4', '5', '6', '7', '8', '9']
#sbtn_colour_map = dictionary that maps sbtn labels to colours
sbtn_colour_map = {}
for ind, label in enumerate(sbtn_labels):
sbtn_colour_map[label] = sbtn_colours[ind]
def label_sbtn(row, labels):
return labels[ row['SBTN'] -1]
data.loc[:,'sbtnLabels'] = data.apply(lambda row: label_sbtn(row, sbtn_labels), axis=1)
检查我的数据类型时,我可以看到SBTN被记录为一个类别:
data.dtypes
Out[##]:
BH category
MD float64
DR float64
FM category
RHOB float64
M_MOD float64
PHI float64
RES float64
SBTN category
SU float64
VP float64
Z float64
dtype: object
这里的问题是我的列SBTN是一个类别而不是int吗?基本上,我想为每个SBTN类型定义一个使用十六进制颜色的颜色映射。在原始csv文件中,SBTN是一个整数
完全错误回溯:
%run "C:\Users\black\Desktop\Pandas Facies\script1.py"
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
C:\Users\black\Desktop\Pandas Facies\script1.py in <module>()
25 return labels[ row['SBTN'] -1]
26
---> 27 data.loc[:,'sbtnLabels'] = data.apply(lambda row: label_sbtn(row, sbtn_labels), axis=1)
28
29
C:\Users\black\AppData\Local\Enthought\Canopy\User\lib\site-packages\pandas\core\frame.pyc in apply(self, func, axis, broadcast, raw, reduce, args, **kwds)
4150 if reduce is None:
4151 reduce = True
-> 4152 return self._apply_standard(f, axis, reduce=reduce)
4153 else:
4154 return self._apply_broadcast(f, axis)
C:\Users\black\AppData\Local\Enthought\Canopy\User\lib\site-packages\pandas\core\frame.pyc in _apply_standard(self, func, axis, ignore_failures, reduce)
4246 try:
4247 for i, v in enumerate(series_gen):
-> 4248 results[i] = func(v)
4249 keys.append(v.name)
4250 except Exception as e:
C:\Users\black\Desktop\Pandas Facies\script1.py in <lambda>(row)
25 return labels[ row['SBTN'] -1]
26
---> 27 data.loc[:,'sbtnLabels'] = data.apply(lambda row: label_sbtn(row, sbtn_labels), axis=1)
28
29
C:\Users\black\Desktop\Pandas Facies\script1.py in label_sbtn(row, labels)
23
24 def label_sbtn(row, labels):
---> 25 return labels[ row['SBTN'] -1]
26
27 data.loc[:,'sbtnLabels'] = data.apply(lambda row: label_sbtn(row, sbtn_labels), axis=1)
TypeError: ('list indices must be integers, not float', u'occurred at index 0')
%运行“C:\Users\black\Desktop\script1.py”
---------------------------------------------------------------------------
TypeError回溯(最近一次调用上次)
C:\Users\black\Desktop\script1.py in()
25返回标签[第['SBTN']-1行]
26
--->27 data.loc[:,'sbtnLabels']=data.apply(lambda行:label_sbtn(行,sbtn_标签),axis=1)
28
29
C:\Users\black\AppData\Local\enthught\Canopy\User\lib\site packages\pandas\core\frame.pyc在应用中(self、func、axis、broadcast、raw、reduce、args、**kwds)
4150如果reduce为None:
4151 reduce=True
->4152返回自身。应用标准(f,轴,减少=减少)
4153其他:
4154返回自应用广播(f轴)
C:\Users\black\AppData\Local\enthught\Canopy\User\lib\site packages\pandas\core\frame.pyc在应用标准中(self、func、axis、ignore\u failures、reduce)
4246尝试:
4247用于枚举中的i、v(系列):
->4248结果[i]=func(v)
4249键。追加(v.name)
4250例外情况除外,如e:
C:\Users\black\Desktop\script1.py in(行)
25返回标签[第['SBTN']-1行]
26
--->27 data.loc[:,'sbtnLabels']=data.apply(lambda行:label_sbtn(行,sbtn_标签),axis=1)
28
29
标签(行,标签)中的C:\Users\black\Desktop\script1.py
23
24 def标签(世界其他地区,标签):
--->25返回标签[第['SBTN']-1行]
26
27 data.loc[:,'sbtnLabels']=data.apply(lambda行:label_sbtn(行,sbtn_标签),axis=1)
TypeError:(“列表索引必须是整数,而不是浮点”,u“出现在索引0”处)
该错误意味着行['SBTN']
是浮点。将其转换为带有int
的整数,即标签[int(行['SBTN'])-1]
。您可能需要首先确保它确实是浮点类型的整数,即断言行['SBTN']==int(行['SBTN'])
在提问时始终发布错误的完整回溯。查看错误发生的位置很重要。抱歉,现在更新。没错!谢谢