1
我试图规范化一些数据。在我的数据框中,如果列以相同的前缀开头,它们属于一起(属于ab_000
和ab_001
,但ac_000
不属于前两者)。所以我试图用归一化归一化归属列。对于这一点,我已经写了:Python - 评估字符串匹配时的类型错误
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])
正确的,我得到的输出:
的样本数据:
aa_000 ab_000 ac_000 ad_000 ae_000 af_000 af_001 af_002 af_003 af_004 ... ed_004 ed_005 ed_006 ed_007 ed_008 ed_009 ee_000 ef_000 eg_000 classN
0 76698 NaN 2.130706e+09 280.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 493384.0 721044.0 469792.0 339156.0 157956.0 73224.0 0.0 0.0 0.0 -1
1 33058 NaN 0.000000e+00 NaN 0.0 0.0 0.0 0.0 0.0 0.0 ... 178064.0 293306.0 245416.0 133654.0 81140.0 97576.0 1500.0 0.0 0.0 -1
2 41040 NaN 2.280000e+02 100.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 159812.0 423992.0 409564.0 320746.0 158022.0 95128.0 514.0 0.0 0.0 -1
你确定所有这些列是集合,而不是'int's?尝试在提供错误的行之前插入'print(data.columns [j] [:2])'。 – SuperBiasedMan
是的,我是积极的,它甚至会运行一段时间。我会用照片更新帖子。 –
你能否向我们提供一个在函数中处理的数据样本? – Jaxian