После перевода из типа с плавающей точкой в ​​тип int, почему число в Python изменилось на -1? - PullRequest
0 голосов
/ 08 марта 2019

Это код, который я ввел:

df = pd.DataFrame({'A': [1.6,1.2,3.9,4.5, np.nan]})  
df['A'] = df['A'].fillna(-1).astype(int)  
for i in df['A']:  
    df["B"] = i  
df  

Но результат, который я получаю, выглядит так:

введите описание изображения здесь

Так почему же столбец B будет отображаться как -1, а не как столбец A?

Ответы [ 3 ]

2 голосов
/ 08 марта 2019

Вы устанавливаете весь столбец на i с помощью df["B"] = i.В вашей последней итерации i равно -1, поэтому весь ваш столбец B установлен на -1.

Если вы хотите установить B на A, вы можете просто использоватьэто (нет необходимости в цикле):

df['B'] = df['A']
0 голосов
/ 08 марта 2019

Изменить

for i in df['A']:
    df["B"] = i 

на

for i, item in df['A'].items():
    df.ix[i, "B"] = item
0 голосов
/ 08 марта 2019

В вашем цикле for вы каждый раз заново назначаете полное значение df["B"]. Последнее значение в df['A'] (np.nan) при преобразовании в целое число равно -1. Поскольку вы устанавливаете df["B"] в целом, все значения присваиваются как -1.

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