串联两个数据框并将重复项放在Pandas中

时间:2019-08-30 07:58:57

标签: python pandas

对于df2,仅在2019年内提供数据:

  type  year  value
0    a  2019     13
1    b  2019      5
2    c  2019      5
3    d  2019     20

df1具有多年数据:

  type  year  value
0    a  2015     12
1    a  2016      2
2    a  2019      3
3    b  2018     50
4    b  2019     10
5    c  2017      1
6    c  2016      5
7    c  2019      8

我需要将它们连接在一起,同时用df2同年的值替换2019df1中的 type date value 0 a 2015 12 1 a 2016 2 2 b 2018 50 3 c 2017 1 4 c 2016 5 5 a 2019 13 6 b 2019 5 7 c 2019 5 8 d 2019 20 值。

预期结果如下:

pd.concat([df1, df2], ignore_index=True, sort =False)

来自value的结果,对于一个year,显然在2019年的type中有多个 type date value 0 a 2019 13 1 b 2019 5 2 c 2019 5 3 d 2019 20 4 a 2015 12 5 a 2016 2 6 a 2019 3 7 b 2018 50 8 b 2019 10 9 c 2017 1 10 c 2016 5 11 c 2019 8 。我应该如何改进代码?谢谢。

@Component
public class ExcludeSessionRepositoryFilter extends OncePerRequestFilter {

  @Override
  protected void doFilterInternal(HttpServletRequest httpRequest, HttpServletResponse httpResponse,
                                  FilterChain filterChain) throws ServletException, IOException {
    httpRequest.setAttribute("org.springframework.session.web.http.SessionRepositoryFilter.FILTERED", Boolean.TRUE);
    filterChain.doFilter(httpRequest, httpResponse);
  }
}

1 个答案:

答案 0 :(得分:3)

添加DataFrame.drop_duplicates以获得type之后的dateconcat的最后一行。

如果typedate对在两个DataFrame中都是唯一的,则解决方案有效。

df = (pd.concat([df1, df2], ignore_index=True, sort =False)
        .drop_duplicates(['type','date'], keep='last'))