행에 이름, 유형 및 SLA 열이있는 데이터 프레임이 있습니다. SLA C 럼은 1, 2 또는 3의 숫자 값입니다. SLA C 럼은 이름이 아닌 유형에 고유합니다.새 Pandas Groupby API 변경
이름 값별로 그룹화하고 동일한 이름을 가진 모든 행에 대해 동일한 숫자 값을 적용하는 새 열을 만드는 코드가 있습니다. 나는. 주어진 이름에 대한 SLA 값이 모두 2이면 모두 2가됩니다. 모두 3이면 3을 얻습니다. 그렇지 않으면 (값의 조합이있는 경우 모든 값이 2 이상일 경우) 모두 기능 2.
df['SLA_Norm'] = df.groupby('Name').apply(assignSLA)
:
def assignSLA(df):
a = pd.Series(df['SLA'], df.index)
m = a.mean()
if m == 1.0:
n = [1]
n = n*len(a)
return pd.Series(n, df.index)
elif m == 3.0:
n = [3]
n = n*len(a)
return pd.Series(n, df.index)
else:
n = [2]
n = n*len(a)
return pd.Series(n, df.index)
최근 GROUPBY API를,이 기능 바꿈을 업데이트 팬더 라이브러리를 업데이트 한 후. 그러나, 나는 이유를 알 수 없다. 누구든지 팬더의 새로운 groupby 기능이이 기능을 깨뜨릴 수있는 이유를 알고 있습니까?
친절하게 감사드립니다.
편집 :
Name Type SLA SLA_Norm
Foo A 1 NaN
Foo B 2 NaN
Foo C 3 NaN
Buzz A 1 NaN
Buzz A 1 NaN
Buzz A 1 NaN
Buzz A 1 NaN
Buzz A 1 NaN
Bar C 3 NaN
Bar C 3 NaN
Bar C 3 NaN
: 판다 14.0로,
Name Type SLA SLA_Norm
Foo A 1 2
Foo B 2 2
Foo C 3 2
Buzz A 1 1
Buzz A 1 1
Buzz A 1 1
Buzz A 1 1
Buzz A 1 1
Bar C 3 3
Bar C 3 3
Bar C 3 3
지금은 얻을 : 판다 13.0로, 내가 가져 오는 데 사용
Name Type SLA
Foo A 1
Foo B 2
Foo C 3
Buzz A 1
Buzz A 1
Buzz A 1
Buzz A 1
Buzz A 1
Bar C 3
Bar C 3
Bar C 3
:
그래서 DF로 시작
당신이했을 사용할 수 있습니다 ...이 코드를 사용해보십시오, 어떤 버전 당신은했다 on, 그리고 당신이 바꾼 버전. API는 이전 버전과 호환됩니다. 따라서 무엇이 '깨는'것인지 확실하지 않습니다. – Jeff
질문을 해당 정보로 업데이트합니다. 조심스럽게이 기능은 수백 일 동안 연속적으로 성공적으로 실행 된 후 팬더를 업데이트하자마자 작동을 멈췄습니다. – humbug
이름을 편집하여 '깨는'언어를 없애고 내 직업을 가능하게하는 라이브러리를 간과하지 않으려 고합니다. – humbug