2
는 I 3 열이 팬더 GROUPBY 계열을 가지고 있고 다른 판다다른 데이터 프레임의 값을 기반으로 판다 그룹에 변경 사항을 적용하는 방법은 무엇입니까?
Data1 Data2(unique names)
name col1 col2 name col
a 10 -0.2 x 0.002
b 80 0.3 a 0.004
a 72 1.1 b 0.007
a 54 0.8 ...
b 90 -3.2
가 팬더 dataframes
df1 = pd.DataFrame.from_dict(Data1)
df2 = pd.DataFrame.from_dict(Data2)
를 생성하고 상기 제를 GROUPBY dataframe의 값에 따른 세 번째 열에서 변경하고자 dataframe
df1Groupby = df1.groupby(df1.keys()[0])
는 DF1
같이 일반적인 이름으로 DF2의 행을 얻을common = {}
for i in df2[df2.keys()[0]]:
if i in df1[df1.keys()[0]].unique():
common[i] = df2[df2.keys()[0]==i][df2.keys()[1]].values
dfcommon = pd.DataFrame.from_dict(common)
는 지금은 함수 정의
col2 = col2 + col1 * col
각 이름에 대한 데이터 1에 COL2을 변경하려면
def my_func(group, amt):
group[group.keys()[2]] = group[group.keys()[2]] + group[group.keys()[1]] * amt
return group
다음 주에 전화 기능
for i in dfcommon.index:
df1Groupby.get_group(i).apply(my_func, dfcommon.loc[i].values[0],axis=1)
하지만 다음 오류가 발생합니다.
TypeError: apply() got multiple values for argument 'axis'
내 접근 방식이 올바른지, 어떤 도움을 주셔서 감사합니다.
와우! 나는 series.map에 대해 몰랐다. 그것은 단지 3 줄의 코드로 작동했습니다! 정말 대답을 주셔서 감사합니다 – Hamed
원한다면 하나의 라이너로 만들 수 있습니다! :) 또한 두 가지 데이터 프레임을 병합하는 것보다 훨씬 빠르고 번거 로움이 없으며 이런 종류의 작업에 적극 권장됩니다! –