2016-04-03 16 views

cevap

0

Pandalar'u kullandığınızı kabul ediyorum.

Tüm DataFrame'e uygulamak yerine, sadece 'X' Serisine (Documentation) uygulayın, aynı zamanda ortalama, maksimum ve min değerlerini de önceden hesaplamanız gerekir. Böyle bir şey:

avg = df['X'].mean() 
diff = df['X'].max() - df['X'].min() 
new_df = df['X'].apply(lambda x: (x-avg)/diff) 

tamamını DataFrame çeki normalleştirmek isteyen varsa bu answer:

df.apply(lambda x: (x - np.mean(x))/(np.max(x) - np.min(x))) 
0

sütunda X değerleri normale isterseniz:

df['x_norm'] = df.X.div(df.X.sum()) 

Adım adim:

In [65]: df 
Out[65]: 
    a b X 
0 2 1 5 
1 1 4 5 
2 7 4 7 
3 1 6 6 
4 5 5 8 
5 5 8 2 
6 6 7 5 
7 8 2 5 
8 7 9 9 
9 9 6 5 

In [68]: df['x_norm'] = df.X.div(df.X.sum()) 

In [69]: df 
Out[69]: 
    a b X x_norm 
0 2 1 5 0.087719 
1 1 4 5 0.087719 
2 7 4 7 0.122807 
3 1 6 6 0.105263 
4 5 5 8 0.140351 
5 5 8 2 0.035088 
6 6 7 5 0.087719 
7 8 2 5 0.087719 
8 7 9 9 0.157895 
9 9 6 5 0.087719 

kontrol:

In [70]: df.x_norm.sum() 
Out[70]: 1.0 
İlgili konular