팬더 및 맞춤 그룹 집계에 관한 질문이있어 내 값을 계산하는 가장 효율적인 방법을 찾을 수 있습니다. 여기 내 코드입니다 :팬더 맞춤 그룹 집계
import pandas as pd
listA = list('abcdefghijklmnopqrstuvwxyz') * 2
listB = listA[::-1]
listC = listA[::2] * 2
listD = "Won"
data1 = range(52)
data2 = range(52,104)
data3 = range(104,156)
rawStructure = [('A', listA),
('B', listB),
('C', listC),
('D', listD),
('Data1', data1),
('Data2', data2),
('Data3', data3)]
df = pd.DataFrame.from_items(rawStructure, orient='columns')
df.loc[40:,"D"] = "Lost"
def customfct(x,y,z):
print('x',x)
data = round(((x.sum() + y.sum())/z.sum()) * 100,2)
return data
def f(row):
val1 = row.loc[(row['D'] == "Won"), 'Data1'].sum()
val2 = row.loc[(row['D'] == "Won"), 'Data2'].sum()
val3 = row.loc[(row['D'] == "Won"), 'Data3'].sum()
val4 = customfct(row.loc[(row['D'] == "Won"), 'Data1'], row.loc[(row['D'] == "Won"), 'Data2'], row.loc[(row['D'] == "Won"), 'Data3'])
return val1, val2, val3, val4
groupByCriteria = "C"
agg = df[:].groupby(by=groupByCriteria).apply(f)
print(agg)
내가 그룹을 다른 열을 사용하는 기능 "customfct"(같은 사용자 정의 계산을 적용 할 수있는보다 효율적인 방법이 있는지 알고 싶습니다 (데이터 1, 데이터 2, DATA3)). 첫 번째 접근 방식은 여기에서 볼 수있는 것과 같았습니다 : http://www.shanelynn.ie/summarising-aggregation-and-grouping-data-in-python-pandas/하지만 한 열 (예 : lambda x : max (x) - min (x))에 제약이없는 수식을 만드는 것은 실행 불가능한 것으로 보입니다. 또한 팬더 시리즈 (튜플 포함) 대신 팬더 데이터 프레임을 어떻게 반환합니까? 미리 감사드립니다!
내 현재 출력(정확하지만 나는 더 효율적인 방법이 추측) :
구체적인 첫 번째 질문은 무엇입니까? 아마도 실제 데이터, 현재 결과, 원하는 결과가 도움이 될 것입니다. – Parfait
원본 게시물에 몇 가지 변경 사항을 적용 했습니까? – Sebastian