Добавление строк в фрейм данных с функцией - PullRequest
0 голосов
/ 06 мая 2020
# new empty dataframe to fill
indexes_to_check = pd.DataFrame(columns=['index', 'reason'])

# function which should fill
def add_to_df(index, reason, source):
    for i in indexes:
        row = pd.DataFrame([[i, reason]], columns=['index', 'reason'])
        source = source.append(row)
    return source

# filling a dataframe to further check
add_to_df(df.query('total_images == 0').index, 'no photo', indexes_to_check)

Проблема: Если я использую функцию add_to_df в результате, я вижу временный фрейм данных источник заполненный, как я хочу, но фрейм данных indexes_to_check (который я хочу заполнить) все еще пуст.

Что мне делать, чтобы заполнить indexes_to_check , но не временный фрейм данных?

Ответы [ 3 ]

0 голосов
/ 06 мая 2020

Вы должны изменить l oop на for i in index: и , чтобы назначить функцию новому объекту indexes_to_check = add_to_df(df.query('total_images == 0').index, 'no photo', indexes_to_check):

# new empty dataframe to fill
indexes_to_check = pd.DataFrame(columns=['index', 'reason'])

# function which should fill
def add_to_df(index, reason, source):
    for i in index:
        row = pd.DataFrame([[i, reason]], columns=['index', 'reason'])
        source = source.append(row)
    return source

# filling a dataframe to further check
indexes_to_check = add_to_df(df.query('total_images == 0').index, 'no photo', indexes_to_check)
0 голосов
/ 06 мая 2020

«Источник» в вашей функции - это локальная переменная, и «indexes_to_check» не изменяется.

0 голосов
/ 06 мая 2020
# function which should fill
def add_to_df(index, reason, source):
for i in indexes:
    row = pd.DataFrame([[i, reason]], columns=['index', 'reason'])
    source = source.append(row)
return source

см. L oop в этой функции,
просто замените for i in indexes : на for i in index :

Ваша ошибка проста в том, что вы используете другой параметр.

...