Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
计算字符串匹配时出现Python类型错误_Python_Pandas - Fatal编程技术网

计算字符串匹配时出现Python类型错误

计算字符串匹配时出现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

我正试图规范化一些数据。在我的数据框中,如果列以相同的前缀开头,则它们属于一起(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.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]