为了账号安全,请及时绑定邮箱和手机立即绑定

在 for 循环中更新数据帧

在 for 循环中更新数据帧

达令说 2021-06-16 17:27:51
我正在尝试从 for 循环中的值创建数据框:d1 = {}d = {}for i in range(4000):   try:    shape_json = json.loads(region_shape[i])    file_name = file_name_nuclei[i]    x_val = shape_json["x"]    y_val = shape_json["y"]    width_val = shape_json["width"]    height_val = shape_json["height"]    path = '/home/values/' + str(file_name)    x1 = x_val    y1 = y_val    x2 = x_val + width_val    y2 = y_val + height_val    df = pd.DataFrame(data=d1)    d = {'col1': [path], 'col2': [x1], 'col3': [y1], 'col4': [x2], 'col5': [y2], 'col5': ['nucleus']}    df2 = pd.DataFrame(data=d1)    df.update(df2)   except:       pass但是,我无法在每次迭代中更新数据帧。任何人都可以帮忙吗?我正在尝试获得输出:0 col1 col2 col3 col4 col5  '/home/values/image.png' 23 55 30 62 'nucleus'  '/home/values/image2.png' 40 72 37 92 'nucleus'.....
查看完整描述

2 回答

?
子衿沉夜

TA贡献1828条经验 获得超3个赞

我会创建一个列表并将所有数据帧添加到循环中的列表中,然后在最后使用 pd.concat:


results = []


for i in range(4000):

    try:

        shape_json = json.loads(region_shape[i])

        file_name = file_name_nuclei[i]


        x_val = shape_json["x"]

        y_val = shape_json["y"]

        width_val = shape_json["width"]

        height_val = shape_json["height"]


        path = '/home/values/' + str(file_name)


        x1 = x_val

        y1 = y_val


        x2 = x_val + width_val

        y2 = y_val + height_val


        d = {'col1': [path], 'col2': [x1], 'col3': [y1], 'col4': [x2], 'col5': [y2], 'col5': ['nucleus']}

        df = pd.DataFrame(data=d)


        results.append(df) # append this loop's df to your list of dataframes

    except:

        pass


final_df = pd.concat(results) 


查看完整回答
反对 回复 2021-06-22
?
眼眸繁星

TA贡献1873条经验 获得超9个赞

您需要在循环之外创建一个“主”数据框。


d1 = {}

d = {}


df = pd.DataFrame(data=d1)


for i in range(4000):

    try:

        shape_json = json.loads(region_shape[i])

    file_name = file_name_nuclei[i]


    x_val = shape_json["x"]

    y_val = shape_json["y"]

    width_val = shape_json["width"]

    height_val = shape_json["height"]


    path = '/home/values/' + str(file_name)


    x1 = x_val

    y1 = y_val


    x2 = x_val + width_val

    y2 = y_val + height_val


    d = {'col1': [path], 'col2': [x1], 'col3': [y1], 'col4': [x2], 'col5': [y2], 'col5': ['nucleus']}

    df2 = pd.DataFrame(data=d1)


    df.update(df2)




    except:

        pass

并且 d1 在所有代码中都是空的。当您尝试使用 df2 更新 df 时,df2 也是空的。


查看完整回答
反对 回复 2021-06-22
  • 2 回答
  • 0 关注
  • 98 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号