代码之家  ›  专栏  ›  技术社区  ›  lokalhangatt

如何在字典中添加新列?

  •  0
  • lokalhangatt  · 技术社区  · 1 年前

    根据下面的数据,我想计算每一行的BMI指数和总行的平均值。BMI指数公式为“berat”/“tinggi”。 enter image description here

    data = [{'nama': 'Senpai', 'tinggi': 1.55, 'berat': 63.41},
     {'nama': 'Yui Rio', 'tinggi': 1.53, 'berat': 61.17},
     {'nama': 'Yuna Hina', 'tinggi': 1.62, 'berat': 70.98},
     {'nama': 'Koharu Hinata', 'tinggi': 1.77, 'berat': 53.45},
     {'nama': 'Mei Mio', 'tinggi': 1.58, 'berat': 67.81},
     {'nama': 'Saki Miyu', 'tinggi': 1.57, 'berat': 68.12},
     {'nama': 'Kokona Haruka', 'tinggi': 1.76, 'berat': 61.96},
     {'nama': 'Haruto Yuto', 'tinggi': 1.52, 'berat': 64.89},
     {'nama': 'Sota Yuki', 'tinggi': 1.62, 'berat': 56.73},
     {'nama': 'Hayato Haruki', 'tinggi': 1.68, 'berat': 69.07},
     {'nama': 'Ryusei Koki', 'tinggi': 1.66, 'berat': 53.02},
     {'nama': 'Sora Sosuke', 'tinggi': 1.5, 'berat': 55.89},
     {'nama': 'Riku Soma', 'tinggi': 1.62, 'berat': 78.24}]
    

    预期结果应显示在关键“斥责”右侧的BMI指数中。预期的结果应该是这样的: enter image description here

    我试着先计算BMI指数,然后再加入数据。但它不起作用。这是我的代码:

    data_array = pd.DataFrame(data)
    
    # for i in data_array:
    #     print(i)
    
    imt = data_array['berat']/data_array['tinggi']
    tes = list(imt)
    
    join_list = data + tes
    join_list_array = pd.DataFrame(join_list)
    print(join_list_array)
    

    你对此有什么想法吗?很抱歉,但我仍在学习数据争吵。我感谢你能提供的任何帮助。

    2 回复  |  直到 1 年前
        1
  •  0
  •   tbold    1 年前

    这是一种对数据帧中的新列使用“逐元素”计算的方法。

    首先,语法 data_array['imt'] 正在创建新列。 然后,在等号右侧计算'imt'列中每一行的值。这种技术称为“逐元素”计算。

    import pandas as pd
    
    data = [{'nama': 'Senpai', 'tinggi': 1.55, 'berat': 63.41},
     {'nama': 'Yui Rio', 'tinggi': 1.53, 'berat': 61.17},
     {'nama': 'Yuna Hina', 'tinggi': 1.62, 'berat': 70.98},
     {'nama': 'Koharu Hinata', 'tinggi': 1.77, 'berat': 53.45},
     {'nama': 'Mei Mio', 'tinggi': 1.58, 'berat': 67.81},
     {'nama': 'Saki Miyu', 'tinggi': 1.57, 'berat': 68.12},
     {'nama': 'Kokona Haruka', 'tinggi': 1.76, 'berat': 61.96},
     {'nama': 'Haruto Yuto', 'tinggi': 1.52, 'berat': 64.89},
     {'nama': 'Sota Yuki', 'tinggi': 1.62, 'berat': 56.73},
     {'nama': 'Hayato Haruki', 'tinggi': 1.68, 'berat': 69.07},
     {'nama': 'Ryusei Koki', 'tinggi': 1.66, 'berat': 53.02},
     {'nama': 'Sora Sosuke', 'tinggi': 1.5, 'berat': 55.89},
     {'nama': 'Riku Soma', 'tinggi': 1.62, 'berat': 78.24}]
    
    # create dataframe
    data_array = pd.DataFrame(data)
    
    # create new column and add values
    data_array['imt'] = data_array['berat'] / (data_array['tinggi'] ** 2)
    
    print(data_array)
    

    我看到你有一个for循环来打印每一行的值。您也可以使用循环来计算新值。这样地:

    for row in data:
        bmi = row['berat'] / (row['tinggi']**2)
        row['imt'] = round(bmi, 2)
    data_array = pd.DataFrame(data)
    
        2
  •  0
  •   lokalhangatt    1 年前

    先生,非常感谢你的帮助。