다음 데이터 프레임에서 여러 열을 사용할 때 Pandas apply 함수에 문제가 있습니다.
df = DataFrame ({'a' : np.random.randn(6),
'b' : ['foo', 'bar'] * 3,
'c' : np.random.randn(6)})
다음 기능
def my_test(a, b):
return a % b
이 기능을 다음과 같이 적용하려고하면 :
df['Value'] = df.apply(lambda row: my_test(row[a], row[c]), axis=1)
오류 메시지가 나타납니다.
NameError: ("global name 'a' is not defined", u'occurred at index 0')
이 메시지를 이해하지 못하고 이름을 올바르게 정의했습니다.
이 문제에 대한 도움을 주시면 감사하겠습니다.
최신 정보
당신의 도움을 주셔서 감사합니다. 실제로 코드에 구문 오류가 발생했습니다. 인덱스에 ''를 넣어야합니다. 그러나 여전히 다음과 같은보다 복잡한 기능을 사용하여 동일한 문제가 발생합니다.
def my_test(a):
cum_diff = 0
for ix in df.index():
cum_diff = cum_diff + (a - df['a'][ix])
return cum_diff
my_test(a)
가 df
인수로 전달되지 않은 이후로 무엇이 무엇인지 알지 못합니다 ( df
전 세계적으로 끔찍한 연습이 아닌 경우 ). 함수 내에서 필요한 모든 값을 인수 (바람직하게는 순서대로)로 전달해야합니다. 그렇지 않으면 함수가 어디서 df
오는지 어떻게 알 수 있습니까? 또한 전역 변수로 가득 찬 네임 스페이스에서 프로그래밍하는 것은 좋지 않습니다. 이러한 오류는 잡을 수 없습니다.
apply
가능한 많이 사용하지 마십시오 . 반드시 사용해야할지 확실하지 않으면 사용하지 않을 수 있습니다. 코드에서 pandas apply () 를 언제 사용하고 싶습니까? .