2012-12-18 54 views
11

Tôi là người mới vào khung dữ liệu gấu trúc và tôi muốn áp dụng hàm cho mỗi cột để tính toán cho từng phần tử x, x/max của cột.Áp dụng chức năng trên Pandas dataframe

Tôi đã tham chiếu câu hỏi này, nhưng gặp sự cố khi truy cập tối đa mỗi cột. Cảm ơn trước Pandas DataFrame: apply function to all columns

Input:

 A B C D 
    0 8 3 5 8 
    1 9 4 0 4 
    2 5 4 3 8 
    3 4 8 5 1 

Output:

 A  B  C D 
    0 8/9 3/8 5/5 8/8 
    1 9/9 4/8 0/5 4/8 
    2 5/9 4/8 3/5 8/8 
    3 4/9 8/8 5/5 1/8 
+0

Có "0,88 .." đủ hay bạn thực sự cần phần '8/9'? – DSM

+0

Ồ vâng, 0.888 sẽ rất tuyệt. Nó được dự định để hiển thị các hoạt động. Xin lỗi vì sự nhầm lẫn. – msunbot

Trả lời

13

Something như thế này nên làm việc:

>>> from pandas import DataFrame 
>>> 
>>> df = DataFrame({"A": [8,9,5,4], "B": [3,4,4,8], "C": [5,0,3,5], "D": [8,4,8,1]}) 
>>> df.max() 
A 9 
B 8 
C 5 
D 8 
>>> (df * 1.0)/df.max() 
      A  B C  D 
0 0.888889 0.375 1.0 1.000 
1 1.000000 0.500 0.0 0.500 
2 0.555556 0.500 0.6 1.000 
3 0.444444 1.000 1.0 0.125 

Lưu ý rằng tôi đã nhân df bởi 1.0 để nó không bao gồm của int s nữa (.astype(float) cũng đã hoạt động) để tránh phân chia số nguyên và kết quả là DataFrame đầy 0 và 1.

Các vấn đề liên quan