我想按照特定列对具有多列的数据框进行排序,但首先需要将该特定列的类型从object
更改为int
. 如何在保留原始列位置的同时更改特定列的数据类型?
df['colname'] = df['colname'].astype(int)
可以将float
类型的数据转换为int
类型。
我已经尝试过以下方法:
df['column']=df.column.astype('int64')
而且它对我起作用了。
您可以通过reindex
按排序列sort_values
,使用astype
强制转换为int
:
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
或错误的数据无法工作,请使用to_numeric
进行转换:df = pd.DataFrame({'A':[1,2,3],
'B':[4,5,6],
'colname':['7','3','None'],
'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 None
print (pd.to_numeric(df.colname, errors='coerce').sort_values())
1 3.0
0 7.0
2 NaN
Name: colname, dtype: float64
df.column_name.apply(int)
您可以将int
替换为所需的数据类型,例如(np.int64)
、str
、category
。df = pd.read_csv(data, dtype={'Col_A': str,'Col_B':int64})
"Original Answer"翻译成中文是"最初的回答"。d = {'col1': [1, 2], 'col2': [3, 4]}
col1
转换为int32
,我们可以使用字典,例如:df.astype({'col1': 'int32'})
SettingWithCopyWarning
警告。
df['colname'] = df['colname'].astype(int)
吗? - jezraelint
进行排序,然后再转换回string
(object
)? - jezraeldf['colname'] = df['colname'].astype(int)
这段代码能正常工作还是会出现错误? - jezrael