2016-02-25 2 views
0

У меня есть следующий код:SettingWithCopyWarning Python изменения столбца типа данных в Dataframe

block_table[[compared_attribute]] = block_table[[compared_attribute]].astype(int) 

Я хочу, чтобы изменить тип данных столбца. Код работает, но я получаю предупреждение от Python: SettingWithCopyWarning: Значение пытается установить на копии среза из DataFrame. Попробуйте использовать .loc [row_indexer, col_indexer] = значение вместо

Смотрите на предостережения в документации: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy самоуправление [k1] = значение [k2]

Я смотрел в это предупреждение, и я читал его может создать копию dataframe, вместо того, чтобы просто переписав его, поэтому я попытался следующие решения, не повезло ...

block_table.loc[[compared_attribute]] = block_table[[compared_attribute]].astype(int) 




block_table.loc[:,compared_attribute] = block_table[[compared_attribute]].astype(int) 
+0

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

+0

Спасибо, я попробовал: block_table [compared_attribute] = block_table [compared_attribute] .astype (интермедиат) , но его все еще дает мне предупреждение ... – user1064285

ответ

0

Это должно быть так же просто, как:

block_table.loc[:,compared_attribute] = block_table[compared_attribute].astype(int) 

Предполагается, что сравниваемые атрибуты по столбцам, в противном случае, переключить двоеточие и compare_attribute в loc loc. Также довольно сложно ответить без примера того, как выглядят данные и что такое compare_attribute.