Применение формулы к первым 2 столбцам кадров данных и отображение результата в 3 столбцах с помощью python

#python #json #excel #pandas #dataframe

Вопрос:

Итак, у меня было два файла jsons, из которых значения были извлечены в фрейм данных и сохранены на листе excel

Файл JSON1

 {
 "flower": {
    "price": {
        "type": "good",
        "value": 5282.0,
        "direction": "up"
    }
   },
 "furniture": {
    "price": {
        "type": "comfy",
        "value": 9074.0,
        "direction": "down"
    }
   }
 }
 

Файл JSON2

 {
 "flower": {
    "price": {
        "type": "good",
        "value": 827.0,
        "direction": "up"
    }
   },
 "furniture": {
    "price": {
        "type": "comfy",
        "value": 468.0,
        "direction": "down"
    }
   }
 }
 

чтобы создать фрейм данных и сохранить его на листе Excel, код был

 import json
import pandas as pd

with open('jsonfile1.json', 'r') as f1:              
    data1 = json.load(f1)

with open('jsonfile2.json', 'r') as f2:                      
    data2 = json.load(f2)


    

col1 = [data1['flower']['price']['value'], data1['furniture']['price']['value']]
col2 = [data2['flower']['price']['value'], data2['furniture']['price']['value']]

index = ['flower' , 'furniture' ]


df = pd.DataFrame({'value 1': col1, 'value2': col2, 'Test': index}).set_index('Test')

# storing into the excel file
df.to_excel('file.xlsx')
 

теперь вывод , который я хочу: применить формулу [{(значение 1 — значение 2)/значение 1}*100] в столбце 1 и столбце 2 , где результат должен отображаться в третьем столбце фрейма данных, как это показано на листе excel

поскольку я совсем новичок в изучении python, поэтому меня смущает, как применять формулы к столбцам в фрейме данных. так что я был бы благодарен , если бы кто-нибудь мог мне помочь!

Ответ №1:

Вы можете просто использовать столбцы для расчета:

 df["col3"] = ((df["value 1"]-df["value2"])/df["value 1"])*100
 

Комментарии:

1. это дает ошибку, вы можете быть более конкретным?

2. Извините, я использовал неправильные названия столбцов. Попробуйте отредактированный код

3. пожалуйста , поделитесь своим запущенным кодом, потому что приведенное выше исправление все еще не работает и наблюдаются ошибки

4. Можете ли вы более конкретно рассказать об ошибках, которые вы наблюдаете? Я просто импортирую jsons, изменяю фрейм данных, как это сделали вы, и применяю опубликованную строку, чтобы получить столбец «col3».