Я работаю с csvfiles. Моя цель - написать json-формат с информацией csvfile. Especifically, я хочу, чтобы получить подобный формат, как miserables.jsonНапишите формат json, используя pandas 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
}
]
Однако, с кодом I используемый результат выглядит следующим образом:
[
{
"source": "Germany",
"target": "Mexico",
"value": 1
},
{
"source": null,
"target": "USA",
"value": 2
}
][
{
"source": "Brazil",
"target": "Argentina",
"value": 3
}
]
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-файла? –