标题应该说明一切,我想转换这个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'))
答案 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