我正在尝试规范化一些数据。在我的数据框中,如果列以相同的前缀开头,则它们属于一起(fe。var Calendar = {
e: $('#calendar'),
views: {
agendaDay: {
defaultView: 'agendaDay',
slotDuration: '00:15:00',
minTime: '00:00:00',
maxTime: '20:00:00',
header: {
right: 'prev,next today',
left: 'title'
}
},
agendaWeek: {
defaultView: 'agendaWeek',
slotDuration: '00:30:00',
minTime: '09:00:00',
maxTime: '17:00:00',
header: {
left: 'prev,next today',
center: 'title',
right: 'agendaDay,agendaWeek,month'
}
}
},
resize: function() {
if (Calendar.whichView($(document).width()) !== Calendar.e.fullCalendar('getView')) {
Calendar.e.fullCalendar('destroy');
Calendar.init();
}
},
whichView: function(width) {
if (width < 601) {
return 'agendaDay';
} else {
return 'agendaWeek';
}
},
init: function() {
Calendar.e.fullCalendar(Calendar['views'][Calendar.whichView($(document).width())]);
}
}
$(function() {
Calendar.init();
$(window).resize(Calendar.resize);
});
和ab_000
属于一起,但ab_001
不属于前两个)。所以我试图用l1规范化来标准化所属列。为此,我写了:
ac_000
但是,在评论标记的行中,我收到错误:
def normalize(df):
data = df.copy()
to_work_with = []
for i in range(0, len(data.columns) - 1):
for j in range(0, len(data.columns) -1 ):
if data.columns[i][:2] == data.columns[j][:2]: # error here
to_work_with.append(data.columns[j])
data[to_work_with] = nr(data[to_work_with],axis=1, norm='l1')
to_work_with = []
return data
如果我只是跑
TypeError: 'int' object has no attribute '__getitem__'
它返回data.columns[1][:2] == data.columns[2][:2]
,没有错误。我错过了什么?
[编辑]
显然它会在错误产生之前运行一段时间。通过在比较之前添加False
,我得到输出:
示例数据:
print(data.columns[j][:2])
答案 0 :(得分:0)
看起来你的data.columns之一是int类型。
使用operator []时会调用getitem ()。
例如,当tmp = columns[2]
时,columns.__getitem__(2)
被调用。