Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 连接两个数据帧,并将重复的数据帧放入_Python_Pandas - Fatal编程技术网

Python 连接两个数据帧,并将重复的数据帧放入

Python 连接两个数据帧,并将重复的数据帧放入,python,pandas,Python,Pandas,对于仅具有2019年数据的df2: 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

对于仅具有2019年数据的df2:

  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
我需要将它们连接在一起,同时用
df1
当年的值替换
2019
中的
df2

预期结果如下:

  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)
的结果,对于一个
类型
,在2019年的
年显然有多个
值。我应该如何改进代码?多谢各位

   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
concat
之后,根据
类型和
日期添加获取最后一行

如果
类型
日期
对在两个数据帧中都是唯一的,则解决方案有效

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

keep='last'
是否意味着将采用
df1
中的
值,而不是
df2
?如果我写
df=(pd.concat([df2,df1],ignore_index=True,sort=False)。drop_duplicates(['type','date'],keep='last'))
@ahbon-这意味着它得到concanated行的最后一个值,所以这里从
df2
如果存在,如果不存在,从df1.point-在pd.concat([df1,df2],ignore_index=True,sort=False)之后df1中的值位于前4行,因此keep='last'保留原始值,不使用新值更新。
我需要将它们连接在一起,同时将2019年的df2值替换为df1当年的值。
。。最好是更改名称:)+1可以将
df=(pd.concat([df1,df2],ignore_index=True,sort=False)更改为
df=(pd.concat([df1,df2[df2.columns.intersection(df1.columns)],忽略_index=True,sort=False)。删除重复项(['type','date','a',b,c',keep='last')))
-