1
groupby 작업의 결과에 적용을 사용하려고 할 때 문제가 있습니다. 팬더 : 적용 할 급식 색인 값
나는 다음과 같은 2 dataframes 있습니다>>> df2 = df2.groupby(['id2', 'id1']).sum()
>>> df2.head()
value
id2 id1
81 1701071 49.94
88 1701071 759.22
2001011 73.26
2001382 199.70
2003071 25.00
을 그리고 내가 지금 적용 사용하고 싶습니다,하지만 난 공급해야합니다
>>> df1.head()
col1 col2 col3
id1
2001991 0.0 0 0
1501102 3.0 1 1
1701072 0.0 0 0
2001022 0.1 20 50
2001212 3.0 2 4
>>> df2.head()
id2 value id1
0 24400 6.28 2001022
1 24400 3.40 2001011
2 24037 12.30 2002011
3 24037 3.00 2001382
4 24037 20.00 1701071
는 GROUPBY과 합이 DF2하는 내가 먼저 않았다을 index의 일부인 id1을 사용하므로 다음을 시도 할 때 오류가 발생합니다.
df2['new'] = df2.apply(lambda row: min(row['value'], df1.loc[row['id1'], 'col1']), axis=1)
올바른 정보 이 일을하는 방법?
[BTW, 하나의 테이블에서 df1과 df2를 병합하려고 했으므로 (df2의 각 행에 df1의 col1, col2 및 col3에 해당하는 필드가 있음) 그러나 groupby 및 sum) 당신이 인덱스를 재설정 할 수 있습니다
색인'df2.reset_index (level = 'id1'')를 재설정 할 수 있으며 일반 열이됩니다. 또는 groupby 호출에'as_index = False'를 제공하십시오. – joris
@joris 저는 이것이 정말 좋은 대답이라고 생각합니다. 대답 상자에 넣을만한 가치가 있다고 생각합니다. –
@joris : 감사합니다. as_index = 거짓은 나를위한 좋은 해결책입니다. (당신이 코멘트로 대답했기 때문에 나는 당신을 투표 할 수 없습니다) – Armando