python - Using Pandas to export multiple rows of data to a csv -


i have matching algorithm links students projects. it's working, , have trouble exporting data csv file. takes last value , exports only, when there 200 values exported.

the data that's exported uses each number value when whole 's' rather 3 three numbers make 's', split 3 columns. i've attached images below. appreciated.

what looks like

what should like

#imports pandas  import pandas pd pandas import dataframe   spa() m in m:    s = m['student']    l = m['lecturer']    lecturer[l]['limit'] = lecturer[l]['limit'] - 1    id = m['projectid']    p = project[id]['title']    c = project[id]['sourceid']    r = str(getrank("single_projects1copy.csv",s,c))      print(s+","+l+","+p+","+c+","+r)     datapack = (s+","+l+","+p+","+c+","+r)     df = pd.dataframe.from_records([datapack])    df.to_csv('try.csv') 

you keep overwriting in loop end last bit of data, need append csv df.to_csv('try.csv',mode="a",header=false) or create 1 df , append , write outside loop, like:

df = pd.dataframe() m in m:    s = m['student']    l = m['lecturer']    lecturer[l]['limit'] = lecturer[l]['limit'] - 1    id = m['projectid']    p = project[id]['title']    c = project[id]['sourceid']    r = str(getrank("single_projects1copy.csv",s,c))      print(s+","+l+","+p+","+c+","+r)     datapack = (s+","+l+","+p+","+c+","+r)     df.append(pd.dataframe.from_records([datapack])) df.to_csv('try.csv') # write data once outside loop 

a better option open file , pass file object to_csv:

with open('try.csv', 'w') f:     m in m:        s = m['student']        l = m['lecturer']        lecturer[l]['limit'] = lecturer[l]['limit'] - 1        id = m['projectid']        p = project[id]['title']        c = project[id]['sourceid']        r = str(getrank("single_projects1copy.csv",s,c))        print(s+","+l+","+p+","+c+","+r)         datapack = (s+","+l+","+p+","+c+","+r)        pd.dataframe.from_records([datapack]).to_csv(f, header=false) 

you individual chars because using from_records passing single string datapack value iterates on chars:

in [18]: df = pd.dataframe.from_records(["foobar,"+"bar"])  in [19]: df out[19]:     0  1  2  3  4  5  6  7  8  9 0  f  o  o  b   r  ,  b   r  in [20]: df = pd.dataframe(["foobar,"+"bar"])  in [21]: df out[21]:              0 0  foobar,bar 

i think want leave tuple datapack = (s, l, p,c, r) , use pd.dataframe(datapack). don't need pandas @ all, csv lib without needing create dataframes.


Comments