我正在用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)
答案 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状态的文档:
返回:
DataFrame
或TextParser
因此,当您尝试:
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
存在的期望不正确