Обновить фрейм данных в цикле for - PullRequest
0 голосов
/ 20 сентября 2018

Я пытаюсь создать фрейм данных из значений в цикле 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 ]

0 голосов
/ 20 сентября 2018

Я бы создал список и добавил все ваши фреймы данных в список в цикле, а затем использовал 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) 
0 голосов
/ 20 сентября 2018

Вам необходимо создать "основной" фрейм данных вне цикла.

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 пуст во всем коде.Когда вы пытаетесь обновить df с помощью df2, df2 тоже пусто.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...