Я хочу отсортировать фрейм данных со многими столбцами по определенному столбцу, но сначала мне нужно изменить тип с object на int. Как изменить тип данных этого конкретного столбца при сохранении исходных позиций столбца?

13
DougKruger 11 Янв 2017 в 15:23

4 ответа

Лучший ответ

Вы можете использовать reindex по отсортированному столбцу sort_values , приведен к int {{ X3 } } :

df = pd.DataFrame({'A':[1,2,3],
                   'B':[4,5,6],
                   'colname':['7','3','9'],
                   'D':[1,3,5],
                   'E':[5,3,6],
                   'F':[7,4,3]})

print (df)
   A  B  D  E  F colname
0  1  4  1  5  7       7
1  2  5  3  3  4       3
2  3  6  5  6  3       9

print (df.colname.astype(int).sort_values())
1    3
0    7
2    9
Name: colname, dtype: int32

print (df.reindex(df.colname.astype(int).sort_values().index))
   A  B  D  E  F colname
1  2  5  3  3  4       3
0  1  4  1  5  7       7
2  3  6  5  6  3       9

print (df.reindex(df.colname.astype(int).sort_values().index).reset_index(drop=True))
   A  B  D  E  F colname
0  2  5  3  3  4       3
1  1  4  1  5  7       7
2  3  6  5  6  3       9

Если первое решение не работает из-за None или неверных данных, используйте

jezrael 11 Янв 2017 в 12:57

Я пробовал следующее:

df['column']=df.column.astype('int64')

И это сработало для меня.

4
keramat 27 Мар 2018 в 08:13

Чтобы просто изменить один столбец, вот что вы можете сделать: df.column_name.apply(int)

Вы можете заменить int на нужный тип данных, например, (np.int64), str, category.

Для нескольких изменений типа данных я бы рекомендовал следующее:

df = pd.read_csv(data, dtype={'Col_A': str,'Col_B':int64})

0
Kripalu Sar 16 Май 2019 в 11:16

df['colname'] = df['colname'].astype(int) работает при изменении значений float на int как минимум.

11
JimmyOnThePage 11 Янв 2017 в 12:48