'int'对象没有属性'split'

时间:2019-01-31 02:05:26

标签: python

我正在用python进行合并排序,但是我遇到了问题。当我尝试用定界符(每行一个数字,返回一个字符串列表)分割数据时,我无法将其转换为整数。您能帮我理解问题吗? 我尝试将数据csv文件从水平数据格式转换为垂直数据,以实现eclat算法。有人可以帮我吗?

from sys import argv
import sys
from itertools import chain, combinations
import pandas as pd

data = pd.read_csv(r'2010.csv',engine='python', header=None)

def Read_Data(filename):
    data = {}
    trans = 0

    for row in filename:
        trans += 1
        for item in row.split(','):
            if item not in data:
                data[item] = set()
            data[item].add(trans)

    return data

item = Read_Data(data)

2 个答案:

答案 0 :(得分:0)

您可以在第二个循环之前进行type()检查,以确保您正在str上进行拆分。您也可以使用enumerate而不是trans变量。同样,defaultdict比必须为每个项目设置一组要好。它将自动为您完成操作。

from collections import defaultdict

def Read_Data(filename):
    data = defaultdict(set)

    for trans, row in enumerate(filename):
        if isinstance(row, str):
            for item in row.split(','):
                data[item].add(trans)
        else:
            #something to this effect
            data['numbers'].add(trans)

    return data

答案 1 :(得分:0)

pandas.read_csv状态的文档:

  

返回DataFrameTextParser

因此,当您尝试:

data = pd.read_csv(r'2010.csv',engine='python', header=None)
item = Read_Data(data)

您的内部循环不会在str-ings上进行迭代:

for row in filename: # filename is DataFrame or TextParser
    for item in row.split(','):  ## it's not a string. You can't split it

因此,您对方法split存在的期望不正确