私は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オブジェクト)。 返品と印刷はなぜ2つの異なるものになるのですか?これをどのように修正できますか?
[[['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()')では1つのreturn文しか使用していません。 if文には戻り値がないことがあります。 –
私は 'bigList = []'と 'for key、locationGroup ...'という行を入れ替えたいと思うでしょう。 また、 'compileData'へのすべての呼び出しの前にリターンが必要です。 最後に重要なことですが、投稿する前にコードの書式を確認してください。 – nitzel
私は 'pandas'を使ってこの種の作業をすることを推奨します。' pandas.read_csv'はcsvファイルで読み込まれ、 'groupby'sをかなり簡単に行うことができます。希望の出力リストへのCSVは –