Как заменить несколько столбцов друг на друга в пандах - PullRequest
0 голосов
/ 31 августа 2018

Сейчас я занимаюсь анализом проекта. На самом деле, я обнаружил, что некоторые строки данных были испорчены. Вот так:

  Data in 'Direction' column should be in 'Size' column

  Data in 'Size' column should be in 'Floor' column

  Data in 'Renovation' column should be in 'Direction' 

В результате мне нужно изменить это, то есть изменить «Направление» и «Ремонт», как показано ниже:

direction = modify_house.Renovation
modify_house.loc[:, 'Direction'] = direction

Тем не менее, появляется предупреждение об ошибке:

/anaconda3/lib/python3.6/site-packages/pandas/core/indexing.py:543: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

Итак, как это исправить? Или какие-нибудь способы сделать эти данные в нужном месте? Спасибо!

1 Ответ

0 голосов
/ 31 августа 2018

Используйте rename по словарю со старыми и новыми именами столбцов:

modify_house= pd.DataFrame({'A':list('abcdef'),
                           'Size':[4,5,4,5,5,4],
                           'Direction':[7,8,9,4,2,3],
                           'Renovation':[1,3,5,7,1,0],
                           'E':[5,3,6,9,2,4],
                           'F':list('aaabbb')})

print (modify_house)
   A  Size  Direction  Renovation  E  F
0  a     4          7           1  5  a
1  b     5          8           3  3  a
2  c     4          9           5  6  a
3  d     5          4           7  9  b
4  e     5          2           1  2  b
5  f     4          3           0  4  b

d = {'Direction':'Size', 'Size':'Floor','Renovation':'Direction'}
modify_house = modify_house.rename(columns=d)
print (modify_house)
   A  Floor  Size  Direction  E  F
0  a      4     7          1  5  a
1  b      5     8          3  3  a
2  c      4     9          5  6  a
3  d      5     4          7  9  b
4  e      5     2          1  2  b
5  f      4     3          0  4  b

РЕДАКТИРОВАТЬ: Если вы хотите создать новые или перезаписать существующие столбцы, используйте assign:

modify_house = modify_house.assign(Size=modify_house['Direction'], 
                                   Floor=modify_house['Size'], 
                                   Direction=modify_house['Renovation'])
print (modify_house)
   A  Size  Direction  Renovation  E  F  Floor
0  a     7          1           1  5  a      4
1  b     8          3           3  3  a      5
2  c     9          5           5  6  a      4
3  d     4          7           7  9  b      5
4  e     2          1           1  2  b      5
5  f     3          0           0  4  b      4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...