【问题标题】:Multi-index pandas update多索引 pandas 更新
【发布时间】:2019-06-04 21:03:27
【问题描述】:

有两个数据框 df1 和 df2:

import pandas as pd
import numpy as np
import datetime

A = list(range(3,9))
B = [datetime.date(2019,1,1), datetime.date(2019,1,3), datetime.date(2019,1,2), datetime.date(2019,1,8), datetime.date(2017,6,2), datetime.date(2011,5,6)]
C = list('abcdef')
D = list('LMNOPQ')
E = list(range(5,11))

df1 = pd.DataFrame({'A': A, 'B': B, 'C': C, 'D': D, 'E': E})

a = list(range(3,7))
b = [datetime.date(2010,1,1), datetime.date(2019,1,3), datetime.date(2019,1,2), datetime.date(2010,2,10)]
c = list('xymb')
d = list('GZYP')

df2 = pd.DataFrame({'A': a, 'B': b, 'C': c, 'D': d})

行索引 1 和 2 具有相同的“A”和“B”列。

用“C”和“D”列的 df2 数据更新 df1 的最佳方法是什么?

df3 = df1.set_index(['A', 'B']).update(df2.set_index(['A', 'B']))

...不起作用

预期输出是:

    A   B           C   D   E
0   3   2019-01-01  a   L   5
1   4   2019-01-03  y   Z   6
2   5   2019-01-02  m   Y   7
3   6   2019-01-08  d   O   8
4   7   2017-06-02  e   P   9
5   8   2011-05-06  f   Q   10

【问题讨论】:

    标签: pandas


    【解决方案1】:

    它是工作,只需要分隔行,因为更新会改变原来的 df ,所以不需要分配。

    df1=df1.set_index(['A', 'B'])
    df1.update(df2.set_index(['A', 'B']))
    df1=df1.reset_index()
    df1
       A          B  C  D   E
    0  3 2019-01-01  a  L   5
    1  4 2019-01-03  y  Z   6
    2  5 2019-01-02  m  Y   7
    3  6 2019-01-08  d  O   8
    4  7 2017-06-02  e  P   9
    5  8 2011-05-06  f  Q  10
    

    【讨论】:

      猜你喜欢
      • 2018-06-30
      • 2021-09-18
      • 1970-01-01
      • 2018-10-22
      • 2018-10-04
      • 2021-08-25
      • 2017-12-14
      • 1970-01-01
      • 2015-09-05
      相关资源
      最近更新 更多