使用整数数据类型,基于另一列的值对数据帧进行排序

时间:2017-04-06 21:39:57

标签: python sorting pandas

我想根据列对pandas数据帧进行排序,但这些值存储为字符串,但应将它们视为整数。

df.sort(col1)

其中col1 = ['0','1','12','13','3']

如何使用它以便将这些数字视为整数而不是字符串?

2 个答案:

答案 0 :(得分:3)

如果您希望保持数据框不变,只想对其进行排序......
这是假设col1是数据框df

中的一列

选项1

df.iloc[df['col1'].astype(int).argsort()]

选项2
您也可以使用pd.to_numeric

df.iloc[pd.to_numeric(df['col1']).argsort()]

选项3
为了提高效率,您可以重建操作底层的numpy数组

v = df.values
a = df['col1'].values.astype(int).argsort()
pd.DataFrame(v[a], df.index[a], df.columns)

See also

答案 1 :(得分:2)

您可以在排序前尝试此操作:

df['col1'] = df['col1'].astype(int)