好的,我需要采用以下格式的输入文件
5 5 12
1 1
1 2
2 1
2 3
3 1
3 2
3 4
4 2
4 4
1 2
2 3
5 5
然后将其转换为矩形,其中左侧列表示客户ID,右侧列表示项目ID。
我可以让Python导入数据但是我很难按照我需要的方式操作它。
以及我需要数据的示例如下:
Item 1 Item 2 Item 3
Customer1: 1 2 0
Customer2: 1 0 2
以下是我用于导入数据的方法:
def DataImport(filename):
Data = []
with open(filename) as f:
for line in f:
Data.append([int(v) for v in line.split()])
return Data
(不完全的)
def ImportData(filename):
if filename == "history.txt":
Option1 = np.loadtxt(filename, skiprows=1)
CustomerID = np.loadtxt(filename, skiprows=1, usecols=(0,))
ItemID = np.loadtxt(filename, skiprows=1, usecols=(1,))
print(CustomerID)
print(ItemID)
print(Option1)
Option11 = []
for i in Option1:
if i[i][0] == i[0]:
Option11.append(i[0][1])
print(Option11)
else:
Data = np.loadtxt(filename)
def ImportData(filename):
rawdata = {}
File = open(filename, "r")
for line in File:
rawdata[len(rawdata)+1] = line.rstrip("\n")
File.close()
print(rawdata)
def ImportData2(filename):
with open(filename, newline='') as file:
reader = csv.reader(file, delimiter=' ')
next(reader)
TRvalues = dict(reader)
print(TRvalues)
我认为numpy方法以最容易使用的方式呈现,但我不确定如何使用customerID作为键来使用Python,然后以前面提到的方式添加值。
我不确定我是否已经解释得很好,但如果您需要更多说明,我可以回答问题。
答案 0 :(得分:0)
原则上我强烈建议使用像PANDAS(http://pandas.pydata.org/pandas-docs/stable/io.html)这样的东西,尤其是
pandas.read_tabel
将生成一个可以随意操作的pandas数据框。 但是,如果您不喜欢它,您也可以通过简单地使用
按行而不是行进行迭代for row in matrix.T:
instructions for rows...
而不是
for col in matrix:
instructions for columns...
希望它有所帮助。