Я pandas / Python newb ie, и мне было интересно, не могли бы вы помочь мне со следующей проблемой.
Рассмотрим следующий файл csv:
country,continent,year,productA,productB
NLD,Europe,2012,1000,500
NLD,Europe,2013,100,50
NLD,Europe,2014,150,40
NLD,Europe,2015,200,70
CAN,America,2012,30,40
CAN,America,2013,50,90
CAN,America,2014,200,2000
CAN,America,2015,20,30
JPN,Asia,2012,100,2000
JPN,Asia,2013,400,100
JPN,Asia,2014,300,3000
JPN,Asia,2015,400,370
Я хотел бы переписать его как JSON -подобный файл:
[
{
country: 'NLD',
continent: 'Europe',
productA: {
2012: '1000',
2013: '100',
2004: '150',
2005: '200',
},
productB: {
2012: '500',
2013: '50',
2004: '40',
2005: '70',
},
},
{
country: 'CAN',
continent: 'America',
productA: {
2012: '30',
2013: '50',
2004: '200',
2005: '20',
},
productB: {
2012: '40',
2013: '90',
2004: '200',
2005: '30',
},
},
{
country: 'JPN',
continent: 'Asia',
productA: {
2012: '100',
2013: '400',
2004: '300',
2005: '400',
},
productB: {
2012: '2000',
2013: '100',
2004: '3000',
2005: '370',
},
},
]
Этот вопрос похож, но я не смог адаптировать ответ к своим потребностям из-за моих ограниченных возможностей. знание. Используя ответ на указанный вопрос, я могу написать этот фрагмент:
json = (df.groupby(['country','continent'], as_index=False)
.apply(lambda x: dict(zip(x.year,x.productA)))
.reset_index()
.rename(columns={0:'productA'})
.to_json(orient='records'))
, что приведет к
[
{
country: 'NLD',
continent: 'Europe',
productA: {
2012: '1000',
2013: '100',
2004: '150',
2005: '200',
},
},
{
country: 'CAN',
continent: 'America',
productA: {
2012: '30',
2013: '50',
2004: '200',
2005: '20',
},
},
{
country: 'JPN',
continent: 'Asia',
productA: {
2012: '100',
2013: '400',
2004: '300',
2005: '400',
},
},
]
Я был бы очень признателен, если бы вы помогли мне достичь желаемого вывод (включение productB) и предложения ресурсов, которые я мог бы использовать для улучшения своих навыков обработки данных, используя Pandas.
Спасибо!