3
我對Python和熊貓數據框架相對較新,所以也許我錯過了一些非常簡單的東西。 所以我有很多行和列的數據框,但最後終於設法從每列中獲得最大值的只有一行。我用這個代碼來做到這一點:如何按列值對數據框排序?
import pandas as pd
d = {'A' : [1.2, 2, 4, 6],
'B' : [2, 8, 10, 12],
'C' : [5, 3, 4, 5],
'D' : [3.5, 9, 1, 11],
'E' : [5, 8, 7.5, 3],
'F' : [8.8, 4, 3, 2]}
df = pd.DataFrame(d, index=['a', 'b', 'c', 'd'])
print df
Out:
A B C D E F
a 1.2 2 5 3.5 5.0 8.8
b 2.0 8 3 9.0 8.0 4.0
c 4.0 10 4 1.0 7.5 3.0
d 6.0 12 5 11.0 3.0 2.0
然後選擇從每列我用這個函數最大值:
def sorted(s, num):
tmp = s.order(ascending=False)[:num]
tmp.index = range(num)
return tmp
NewDF=df.apply(lambda x: sorted(x, 1))
print NewDF
Out:
A B C D E F
0 6.0 12 5 11.0 8.0 8.8
是的,我失去了行標籤(索引等等),但此列標籤對我來說更重要的是保留。現在我只需要我列需要根據它們內部值前5列進行排序,我需要這樣的輸出:
Out:
B D F E A
0 12.0 11 8.8 8.0 6.0
我一直在尋找一個解決方案,但沒有運氣。我發現按列排序的最好方法是打印NewDF.sort(axis = 1),但沒有任何反應。
編輯: 好吧,我發現了一個方法,但與轉型:
transposed = NewDF.T
print(transposed.sort([0], ascending=False))
這是唯一可行的辦法做到這一點?
嗯,看來我找到了解決方案,無需調換。請檢查編輯。 – jezrael
太容易了!非常感謝! –
感謝您的參考也:)我想起箭頭是我可以做的確認答案是好的,現在我點擊接受標記也。再次感謝jezrael –