разница между df.loc [:, перевернутым (colnames)] и df.loc [:, list (перевернутым (colnames))] - PullRequest
1 голос
/ 12 апреля 2019

df.loc[:, reversed(colnames)] может извлечь фрагмент из df, но не может использоваться для назначения df. Для того, чтобы присвоить этому фрагменту df, я должен использовать df.loc[:, list(reversed(colnames))]

Обратите внимание на следующий код и вывод для уточнения:

import pandas as pd
import numpy as np

df = pd.DataFrame(
        {'a':list('asdf'), 'b':range(4)}
        )

print('df==', df, sep='\n')

colnames = ['a', 'b']

print('\ndf.loc[:, reversed(colnames)]:', df.loc[:, reversed(colnames)], sep='\n')

df.loc[:, reversed(colnames)] = np.nan
print('\ndf after df.loc[:, reversed(colnames)]=np.nan:', df, sep='\n')

df.loc[:, list(reversed(colnames))] = np.nan
print('\ndf after df.loc[:, list(reversed(colnames))]=np.nan:', df, sep='\n')

и вывод:

df==
   a  b
0  a  0
1  s  1
2  d  2
3  f  3

df.loc[:, reversed(colnames)]:
   b  a
0  0  a
1  1  s
2  2  d
3  3  f

df after df.loc[:, reversed(colnames)]=np.nan:
   a  b
0  a  0
1  s  1
2  d  2
3  f  3

df after df.loc[:, list(reversed(colnames))]=np.nan:
    a   b
0 NaN NaN
1 NaN NaN
2 NaN NaN
3 NaN NaN

Это поведение новое. Мне не нужно было list() выполнять задания, когда я использовал Anaconda 2018.12, я недавно обновился до Anaconda 2019.03.

Интересно, что изменилось и вызвало это.

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