pandas重新排列数据帧,使每列的所有值都按升序排列

时间:2014-11-25 15:04:31

标签: python pandas

标题应该说明一切,我想转换这个DataFrame:

A NaN 4 3
B 2 1 4
C 3 4 2
D 4 2 8

进入此DataFrame:

A 2 1 2
B 3 2 3
C 4 4 4
D NaN 4 8

我想以一种很好的方式做到这一点。丑陋的解决方案是采用每一列并形成一个新的DataFrame。 要进行测试,请使用:

d = {'one':[None, 2, 3, 4],
     'two':[4, 1, 4, 2],
     'three':[3, 4, 6, 8],}
df = pd.DataFrame(d, index = list('ABCD'))

1 个答案:

答案 0 :(得分:4)

所需的排序会忽略索引值,因此操作似乎更多 就像NumPy操作而不是Pandas one:

import pandas as pd

d = {'one':[None, 2, 3, 4],
     'two':[4, 1, 4, 2],
     'three':[3, 4, 6, 8],}
df = pd.DataFrame(d, index = list('ABCD'))

#    one  three  two
# A  NaN      3    4
# B    2      4    1
# C    3      6    4
# D    4      8    2

arr = df.values
arr.sort(axis=0)
df = pd.DataFrame(arr, index=df.index, columns=df.columns)

print(df)

产量

   one  three  two
A    2      3    1
B    3      4    2
C    4      6    4
D  NaN      8    4