Неожиданный результат Обновление копии DF при использовании iterrows - PullRequest
0 голосов
/ 21 сентября 2018

Когда я запустил этот код, я ожидал, что df2 точно обновится, но это не так.Вот код ...

import pandas as pd
import numpy as np
exam_data = [{'name':'Anastasia', 'score':12.5}, {'name':'Dima','score':9}, {'name':'Katherine','score':16.5}]
df = pd.DataFrame(exam_data)
df2 = df.copy()
for index, row in df.iterrows():
    df2['score'] = row['score'] * 2
    print(row['name'], row['score'])

print(df2)

Как видно из приведенных ниже результатов, оценки не удвоились, все они были установлены на 33,0

Anastasia 12.5
Dima 9.0
Katherine 16.5
        name  score
0  Anastasia   33.0
1       Dima   33.0
2  Katherine   33.0

Что происходитпочему я вижу этот неожиданный результат?

Ответы [ 2 ]

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

Панды работают по колонкам;вместо итерации по строкам (что медленно), вы можете просто использовать

df2['score'] = df['score'] * 2

, который обновит весь столбец сразу.

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

Потому что вы устанавливаете df2['score'] при каждой итерации.Попробуйте внести изменения:

row['score'] = row['score'] * 2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...