SORU
11 Kasım 2012, Pazar


Nasıl Pandalar dataframe iki sütun için bir işlevi uygulamak için

'ID', 'col_1', 'col_2' sütunlu df yoktur sanırım. Ve ben bir işlev tanımlayın :

f = lambda x, y : my_function_expression.

Şimdi dff'In iki sütun 8* *element-wise için yeni bir sütun hesaplamak 'col_3' , biraz gibi : . uygulamak istiyorum

df['col_3'] = df[['col_1','col_2']].apply(f)  
# Pandas gives : TypeError: ('<lambda>() takes exactly 2 arguments (1 given)'

Nasıl yapmalı ?

**Aşağıda detaylı bir örnek ekleyin***

import pandas as pd

df = pd.DataFrame({'ID':['1','2','3'], 'col_1': [0,2,3], 'col_2':[1,4,5]})
mylist = ['a','b','c','d','e','f']

def get_sublist(sta,end):
    return mylist[sta:end 1]

#df['col_3'] = df[['col_1','col_2']].apply(get_sublist,axis=1)
# expect above to output df as below 

  ID  col_1  col_2            col_3
0  1      0      1       ['a', 'b']
1  2      2      4  ['c', 'd', 'e']
2  3      3      5  ['d', 'e', 'f']

CEVAP
12 Kasım 2012, PAZARTESİ


İşte size bir örnek axis = 1 ile arıyorum olan dataframe, apply kullanarak.

Fark işlevini 14**, işlevi pandalar Serisi bir nesne kabul etmek için yeniden yazmak ve sonra değerleri almak için Dizi dizini için iki değerleri geçirmek için çalışmak yerine bu not.

In [49]: df
Out[49]: 
          0         1
0  1.000000  0.000000
1 -0.494375  0.570994
2  1.000000  0.000000
3  1.876360 -0.229738
4  1.000000  0.000000

In [50]: def f(x):    
   ....:  return x[0]   x[1]  
   ....:  

In [51]: df.apply(f, axis=1) #passes a Series object, row-wise
Out[51]: 
0    1.000000
1    0.076619
2    1.000000
3    1.646622
4    1.000000

Kullanım durumunda bağlı olarak, bazen group nesne pandalar oluşturmak için yararlıdır, ve sonra grup apply kullanın.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • cosmicrocketman

    cosmicrocket

    17 NİSAN 2006
  • ICON

    ICON

    19 EKİM 2011
  • Trulia

    Trulia

    29 Kasım 2006