ラムダ関数を使用して行ごとの計算を行う必要があります。たとえば、「myfunc関数」を使用して、いくつかのデータフレームpython pandas - 'Series'オブジェクトには属性がありません
import pandas as pd
import numpy as np
def myfunc(x, y):
return x + y
colNames = ['A', 'B']
data = np.array([np.arange(10)]*2).T
df = pd.DataFrame(data, index=[range(0, 10)], columns=colNames)
を作成し、これは
df['D'] = (df.apply(lambda x: myfunc(x.A, x.B), axis=1))
に動作しますが、この第二の場合は動作しません!
df['D'] = (df.apply(lambda x: myfunc(x.colNames[0], x.colNames[1]), axis=1))
エラーを与える
AttributeError: ("'Series' object has no attribute 'colNames'", u'occurred at index 0')
私は本当にエラーを与え、これを行う方法上の任意の手がかり(リストを使用してCOLNAMESへのアクセス)は、第2のケースを使用する必要があります
?あなたがdf.apply()
を使用する場合
おかげで
をジャストブラケットを使用します。 'X [COLNAMES [0]]'(ドット表記とブラケットとの違いを議論し、質問がありましたが、私はそれのようにマークすることができると思います誰かがリンクを見つけることができれば複製)。 – ayhan
ありがとう、それは動作します!それを答えとして書いて、それを受け入れてください! –
厳密に言えば、 'x'自体から列名を取得する場合は、' x [x.index [0]] 'を使用します。 –