Ich habe eine CSV-Datei:csv in bestimmten Format Python JSon
Year , To , From , Number
2005 , A , G , 10
2005 , B , E , 20
2005 , A , F , 30
2006 , C , D , 40
2006 , D , F , 50
ich erwarte zu erhalten:
[
{
'graph':{
'links':[
{
'target':'A',
'value':10,
'source':'G'
},
{
'target':'B',
'value':20,
'source':'E'
},
{
'target':'A',
'value':30,
'source':'F'
}
],
'nodes':[
{
'name':'A',
'node':index
},
{
'name':'B',
'node':index
},
{
'name':'E',
'node':index
},
{
'name':'F',
'node':index
},
{
'name':'G',
'node':index
}
]
},
'year':2005
},
{
'graph':{
'links':[
{
'target':'C',
'value':40,
'source':'D'
},
{
'target':'D',
'value':50,
'source':'F'
}
],
'nodes':[
{
'name':'C',
'node':index
},
{
'name':'D',
'node':index
},
{
'name':'F',
'node':index
}
]
},
'year':2006
}
]
Ich habe versucht, den Code der Umsetzung unter:
import pandas as pd
df = pd.read_csv('test.csv')
dict = []
link = {
"source":"",
"target":"",
"value":""
}
node1 = {
"node": "",
"name": ""
}
node2 = {
"node": "",
"name": ""
}
collection = {"year":"", "graph":{
"nodes":[],
"links":[]
}}
gd = df.groupby("Year")
for name, group in gd:
group = group.reset_index(drop=True)
newC["year"] = group["Year"]
for i in range(0, len(group)):
node1["name"] = group["To"][i]
node2["name"] = group["From"][i]
link["value"] = group["Number"][i]
link["source"] = group["From"][i]
link["target"] = group["To"][i]
collection["graph"]["nodes"].append(node1)
collection["graph"]["nodes"].append(node2)
collection["graph"]["links"].append(link)
dict.append(collection)
print(dict)
Aber das ist die Ausgabe der Sammlung:
{
'graph':{
'links':[
{
'target':'D',
'value':50,
'source':'F'
},
{
'target':'D',
'value':50,
'source':'F'
},
{
'target':'D',
'value':50,
'source':'F'
},
{
'target':'D',
'value':50,
'source':'F'
},
{
'target':'D',
'value':50,
'source':'F'
},
{
'target':'D',
'value':50,
'source':'F'
},
{
'target':'D',
'value':50,
'source':'F'
},
{
'target':'D',
'value':50,
'source':'F'
},
{
'target':'D',
'value':50,
'source':'F'
},
{
'target':'D',
'value':50,
'source':'F'
},
{
'target':'D',
'value':50,
'source':'F'
},
{
'target':'D',
'value':50,
'source':'F'
},
{
'target':'D',
'value':50,
'source':'F'
},
{
'target':'D',
'value':50,
'source':'F'
},
{
'target':'D',
'value':50,
'source':'F'
}
],
'nodes':[
{
'node':'',
'name':'D'
},
{
'node':'',
'name':'F'
},
{
'node':'',
'name':'D'
},
{
'node':'',
'name':'F'
},
{
'node':'',
'name':'D'
},
{
'node':'',
'name':'F'
},
{
'node':'',
'name':'D'
},
{
'node':'',
'name':'F'
},
{
'node':'',
'name':'D'
},
{
'node':'',
'name':'F'
},
{
'node':'',
'name':'D'
},
{
'node':'',
'name':'F'
},
{
'node':'',
'name':'D'
},
{
'node':'',
'name':'F'
},
{
'node':'',
'name':'D'
},
{
'node':'',
'name':'F'
},
{
'node':'',
'name':'D'
},
{
'node':'',
'name':'F'
},
{
'node':'',
'name':'D'
},
{
'node':'',
'name':'F'
},
{
'node':'',
'name':'D'
},
{
'node':'',
'name':'F'
},
{
'node':'',
'name':'D'
},
{
'node':'',
'name':'F'
},
{
'node':'',
'name':'D'
},
{
'node':'',
'name':'F'
},
{
'node':'',
'name':'D'
},
{
'node':'',
'name':'F'
},
{
'node':'',
'name':'D'
},
{
'node':'',
'name':'F'
}
]
},
'year':0 2006 1 2006 Name:Year,
dtype:int64
}
Es ist offensichtlich falsch. Warum wiederholt die Ausgabe die letzte Zeile?
Danke, Lang. Es wirkt wie ein Zauber. – dcc