我想对一个有很多列的 Dataframe 按一个特定的列进行排序,但首先我需要将类型从object更改为int。如何更改此特定列的数据类型,同时保持原来的列位置?
object
int
vybvopom1#
df['colname'] = df['colname'].astype(int)至少在从float值更改为int时有效。
df['colname'] = df['colname'].astype(int)
float
chhqkbe12#
我已尝试以下操作:
df['column']=df.column.astype('int64')
对我很有效。
rhfm7lfc3#
您可以通过按sort_values排序的列使用reindex,通过astype转换为int:
sort_values
reindex
astype
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:
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
zphenhs44#
要简单地更改一列,您可以执行以下操作:df.column_name.apply(int)您可以将int替换为所需的数据类型,例如(np.int64)、str、category。对于多个数据类型的更改,我建议如下:df = pd.read_csv(data, dtype={'Col_A': str,'Col_B':int64})
df.column_name.apply(int)
(np.int64)
str
category
df = pd.read_csv(data, dtype={'Col_A': str,'Col_B':int64})
wribegjk5#
documentation提供了所需的所有信息。让我们从文档中获取玩具 Dataframe :
d = {'col1': [1, 2], 'col2': [3, 4]}
例如,如果我们想将col1转换为int32,我们可以使用字典:
col1
int32
df.astype({'col1': 'int32'})
此外,上述方法允许避免SettingWithCopyWarning。
SettingWithCopyWarning
5条答案
按热度按时间vybvopom1#
df['colname'] = df['colname'].astype(int)
至少在从float
值更改为int
时有效。chhqkbe12#
我已尝试以下操作:
对我很有效。
rhfm7lfc3#
您可以通过按
sort_values
排序的列使用reindex
,通过astype
转换为int
:如果由于
None
或错误数据导致第一个解决方案不起作用,请使用to_numeric
:zphenhs44#
要简单地更改一列,您可以执行以下操作:
df.column_name.apply(int)
您可以将
int
替换为所需的数据类型,例如(np.int64)
、str
、category
。对于多个数据类型的更改,我建议如下:
df = pd.read_csv(data, dtype={'Col_A': str,'Col_B':int64})
wribegjk5#
documentation提供了所需的所有信息。让我们从文档中获取玩具 Dataframe :
例如,如果我们想将
col1
转换为int32
,我们可以使用字典:此外,上述方法允许避免
SettingWithCopyWarning
。