我正在使用csvfiles。我的目标是编写一个带有csvfile信息的json格式。 Especifically,我希望得到一个类似的格式miserables.json使用熊猫编写json格式Series和DataFrame
例子:
{"source": "Napoleon", "target": "Myriel", "value": 1},
与我的格式将是信息根据:
[
{
"source": "Germany",
"target": "Mexico",
"value": 1
},
{
"source": "Germany",
"target": "USA",
"value": 2
},
{
"source": "Brazil",
"target": "Argentina",
"value": 3
}
]
然而,我的代码使用输出外观如下:
[
{
"source": "Germany",
"target": "Mexico",
"value": 1
},
{
"source": null,
"target": "USA",
"value": 2
}
][
{
"source": "Brazil",
"target": "Argentina",
"value": 3
}
]
Null
source must是德国。这是主要问题之一,因为有更多城市出现这个问题。除此之外,信息是正确的。我只想在格式中删除几个列表,并将null替换为正确的国家。
这是我使用的代码pandas
和collections
。
csvdata = pandas.read_csv('file.csv', low_memory=False, encoding='latin-1')
countries = csvdata['country'].tolist()
newcountries = list(set(countries))
for element in newcountries:
bills = csvdata['target'][csvdata['country'] == element]
frquency = Counter(bills)
sourceTemp = []
value = []
country = element
for k,v in frquency.items():
sourceTemp.append(k)
value.append(int(v))
forceData = {'source': Series(country), 'target': Series(sourceTemp), 'value': Series(value)}
dfForce = DataFrame(forceData)
jsondata = dfForce.to_json(orient='records', force_ascii=False, default_handler=callable)
parsed = json.loads(jsondata)
newData = json.dumps(parsed, indent=4, ensure_ascii=False, sort_keys=True)
# since to_json doesn´t have append mode this will be written in txt file
savetxt = open('data.txt', 'a')
savetxt.write(newData)
savetxt.close()
任何解决这个问题的建议都很感谢!
感谢
你能提供一些输入CSV文件的行吗? –