试图将教程应用于我自己的某些数据。教程链接: https://github.com/brendonhall/facies_classification/blob/master/Facies%20Classification%20-%20SVM.ipynb错误:列表索引必须是整数,而不是float',在索引0处发生。Python 3.x
我是在[3]代码框中。
当试图确定使用的彩色地图绘制中我得到的错误:
“类型错误(‘列表索引必须是整数,而不是浮动’,在索引0' u'occurred)”我已经贴我的代码如下。在此先感谢,
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')
总是在提问时发布错误的完整追溯。查看错误发生的位置很重要。 –
道歉,现在更新。 –