Pandas Dataframe / Python: Как обновить значение ячейки dataframe, используя цикл for на каждой итерации в python? - PullRequest
1 голос
/ 14 марта 2019

У меня есть кадр данных pandas с 2 столбцами (UserId, RandNo).В этом UserId есть значения для 10 строк, как показано ниже

enter image description here

Теперь я заполняю столбец RandNo через цикл for, как показано ниже.

import pandas as pd
import random

df=pd.read_csv('df_sto.csv', skipinitialspace=True)

rand=0
for index, row in df.iterrows():
    try:
            rand=random.randint(0,100)

            df.at[index, 'RandNo'] = rand           
    except Exception as e:
        print(e)
df.to_csv("df_sto1.csv", sep=',')

Здесь я получаю обновленное значение только в файле df_sto1.csv , обновленное значение не затрагивается в df_sto.csv .

Если строки фрейма данных большие и если цикл for сталкивается с какой-либо проблемой после обновления 95% строк в df.iterrows (): for 'df_sto.csv ' Тогда я хочу повторить форму процесса0% самого себя (от самого 0-го ряда).Чтобы избежать этой проблемы, я хочу обновить фрейм данных для 'df_sto.csv' каждую итерацию самого цикла, а не получать обновленное значение через df.to_csv ("df_sto1.csv",sep = ',')

Помогите мне обновить значение ячейки фрейма данных, используя цикл for в каждой итерации.Заранее спасибо.

1 Ответ

0 голосов
/ 15 марта 2019

Я не думаю, что блок try вообще необходим, но если вы настаиваете на его использовании, возможно, операции - это больше, чем просто присвоение случайных чисел, тогда как насчет того, чтобы обернуть его в функцию?

import pandas as pd
import random

df=pd.read_csv('df_sto.csv', skipinitialspace=True)
copy_df = df.copy()

def update_df(frame):
    for index, row in frame.iterrows():
        rand=random.randint(0,100)
        frame.at[index, 'RandNo'] = rand

    return frame


status = 0
while status == 0:
    try:
        copy_df = update_df(copy_df)
        status = 1
    except Exception as e:
        copy_df = df
        print(e)


df = copy_df
df.to_csv("df_sto1.csv", sep=',')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...