獨立排序一個pandas DataFrame的所有列我有一個數據框,並希望按降序或升序獨立排序所有列。使用sort_values()
import pandas as pd
data = {'a': [5, 2, 3, 6],
'b': [7, 9, 1, 4],
'c': [1, 5, 4, 2]}
df = pd.DataFrame.from_dict(data)
a b c
0 5 7 1
1 2 9 5
2 3 1 4
3 6 4 2
當我使用sort_values()此預期(對我來說)它不工作,僅排序一列:
foo = df.sort_values(by=['a', 'b', 'c'], ascending=[False, False, False])
a b c
3 6 4 2
0 5 7 1
2 3 1 4
1 2 9 5
我可以得到想要的結果,如果我使用該解決方案從this答案它應用了一個λ函數:
bar = df.apply(lambda x: x.sort_values().values)
print(bar)
a b c
0 2 1 1
1 3 4 2
2 5 7 4
3 6 9 5
但是這看起來有點壓倒我。
上面的sort_values()示例中實際發生了什麼,以及如何在沒有lambda函數的情況下以pandas方式對數據框中的所有列進行排序?
謝謝您的回答。但是我仍然更喜歡'df.apply(lambda x:x.sort_values()。values)',因爲它更短,並且不需要numpy導入。 –
這是不是有一些標準的熊貓構造? ;) –
@CordKaldemeyer在使用熊貓時避免使用'numpy'導入時應避免使用'numpy'。那是因爲你輸入'pandas'的乳清你已經輸入'numpy'。事實上,你可以使用'pandas'命名空間來完成jezrael的功能。 'pd.DataFrame(pd.np.sort(df.values,axis = 0),index = df.index,columns = df.columns)' – piRSquared