计算字符串匹配时出现Python类型错误
我正试图规范化一些数据。在我的数据框中,如果列以相同的前缀开头,则它们属于一起(fe.计算字符串匹配时出现Python类型错误,python,pandas,Python,Pandas,我正试图规范化一些数据。在我的数据框中,如果列以相同的前缀开头,则它们属于一起(fe.ab_000和ab_001属于一起,但是ac_000不属于前两个)。所以我尝试用l1规范化来规范化所属的列。为此,我写了: 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.co
ab_000
和ab_001
属于一起,但是ac_000
不属于前两个)。所以我尝试用l1规范化来规范化所属的列。为此,我写了:
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
看起来您的一个data.columns是int类型 当您使用运算符[]时,将调用getitem()
例如,当
tmp=columns[2]
时,将调用columns.\uuuuu getitem\uuuuuuuuuu(2)
。它看起来像您的一个数据。columns的类型为int
当您使用运算符[]时,将调用getitem()
例如,当
tmp=columns[2]
时,将调用columns.\uuuuu getitem\uuuuuuuuuu(2)
。是否确定所有这些列都是集合,而不是int
s?尝试在给出错误的行之前插入print(data.columns[j][:2])
。是的,我肯定,它甚至运行了一段时间。我会用图片更新帖子。你能给我们提供一个函数中正在处理的数据样本吗?SuperBiasedMan是对的,如果我们不知道data.columns
的结构,我们真的帮不了你。听起来您的问题是列表结构中的嵌套级别太少了。是否可以打印数据。列[i]
也可以?是否确定所有这些列都是集合,而不是int
s?尝试在给出错误的行之前插入print(data.columns[j][:2])
。是的,我肯定,它甚至运行了一段时间。我会用图片更新帖子。你能给我们提供一个函数中正在处理的数据样本吗?SuperBiasedMan是对的,如果我们不知道data.columns
的结构,我们真的帮不了你。听起来您的问题是列表结构中的嵌套级别太少了。您是否也可以打印数据.columns[i]
?