Я работаю над кодом, который принимает файл csv, а затем возвращает список точек данных для каждой строки в файле csv. Списки будут отсортированы по дате и по местоположению.Список Python будет печатать, но не возвращать
Код делает список, как я его хочу, но не возвращает список при вызове.
Первая функция считывает файл и создает точки данных. вторая функция вызывает первый, сортирует и (надеюсь) возвращает данные
def CreateDataStructure(data):
allData=[]
with open(data,'r') as data:
dataRead=data.readlines()
for line in dataRead[1:]:
splitList=line.split(",")
dataPoint =[splitList[25],splitList[1],{splitList[19]:splitList[9]}]
allData.append(dataPoint)
sortedData=sorted(allData)
return sortedData
def compileData(filename,counter,sortedData):
if counter==0:
sortedData=CreateDataStructure(filename)
compileData(filename,1,sortedData)
else:
if counter<len(sortedData):
if sortedData[0][0]==sortedData[1][0] and sortedData[0][1]==sortedData[1][1]:#change these back
compDict=dict(list(sortedData[0][2].items())+list(sortedData[1][2].items()))
sortedData[0]=[sortedData[0][0],sortedData[0][1],compDict]
sortedData.pop(1)
compileData(filename,counter,sortedData)
counter=counter+1
else:
sortedData+=[sortedData.pop(0)]
counter=counter+1
compileData(filename,counter,sortedData)
else:
from itertools import groupby
for key, locationGroup in groupby(sortedData, lambda x: x[0]):
bigList=[]
smallList=[]
for date in locationGroup:
smallList.append(date)
bigList.append(smallList)
print bigList
return bigList
print compileData("fakeData.csv",0,[])
Когда я запускаю этот код, он печатает то, что я хочу (biglist, который я вставил ниже в случае, если вы задаетесь вопросом), но не возвращает None (noneType). Почему возвращение и печать дают две разные вещи, и как я могу исправить это?
[[['744701', '40974', {'Alkalinity': '234'}], ['744701', '41018', {'Alkalinity': '252'}], ['744701', '41058', {'Alkalinity': '270.53'}]], [['744701', '40974', {'Alkalinity': '234'}], ['744701', '41018', {'Alkalinity': '252'}], ['744701', '41058', {'Alkalinity': '270.53'}]], [['744701', '40974', {'Alkalinity': '234'}], ['744701', '41018', {'Alkalinity': '252'}], ['744701', '41058', {'Alkalinity': '270.53'}]]]
В этом коде используется только один оператор возврата ('compileData()'). В некоторых случаях ваши операторы if не имеют возвратного значения. –
Я бы предположил, что вы также захотите поменять строки 'bigList = []' и 'для ключа, locationGroup ...'. Кроме того, вам может понадобиться возврат перед каждым вызовом 'compileData'. И последнее, но не менее важное: Пожалуйста, проверьте форматирование кода перед публикацией. – nitzel
Я бы посоветовал использовать 'pandas' для этого,' pandas.read_csv' будет читать в csv-файле, и вы можете сделать 'groupby' довольно легко - я не совсем уверен, что такое отображение из csv в желаемый выходной список, хотя –