Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/74.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 3.x 使用pd.merge时填充NA_Python 3.x_Pandas - Fatal编程技术网

Python 3.x 使用pd.merge时填充NA

Python 3.x 使用pd.merge时填充NA,python-3.x,pandas,Python 3.x,Pandas,我有两个数据帧,我想将它们合并到公共列上,如下所示。第二个数据帧中还有一个新列 dummy_data1 = {'id': ['1', '2', '3', '4'],'name': ['A', 'C', 'E', 'G'], 'year':['2012','2012','2012','2012']} df1 = pd.DataFrame(dummy_data1, columns = ['id', 'name', 'year']) dummy_data2 = { '

我有两个数据帧,我想将它们合并到公共列上,如下所示。第二个数据帧中还有一个新列

dummy_data1 = {'id': ['1', '2', '3', '4'],'name': ['A', 'C', 'E', 'G'],
           'year':['2012','2012','2012','2012']}

df1 = pd.DataFrame(dummy_data1, columns = ['id', 'name', 'year'])

dummy_data2 = {
    'id': ['1', '2', '3', '7',],
    'name': ['A', 'C', 'E', 'P'],
    'ADDRESS': ['X', 'Y', 'Z', 'P'],'year':['2013','2013','2013','2013']}

df2 = pd.DataFrame(dummy_data2, columns = ['id', 'name','ADDRESS','year'])
当我将这两个数据帧与

df_merge = pd.merge(df1, df2, on=['name','id','year'],how='outer')
由于新添加的列,我得到了一些行的NaN,正如预期的那样:

我的问题是关于NaN的,如果该id的数据在另一个数据帧中可用,是否有方法重复NaN的数据。所以对于索引0,它带来了“X”而不是“nan”,对于索引1,它带来了“Y”等等。我只想假设不同年份的“地址”不变。 谢谢

我建议并使用

合并排序数据的排序工作;因此,在使用它对数据进行排序之前,我会给出建议。在你的情况下,它已经是

pd.merge_ordered(df1,df2).bfill()

    id  name    year    ADDRESS
0   1   A   2012         X
1   1   A   2013         X
2   2   C   2012         Y
3   2   C   2013         Y
4   3   E   2012         Z
5   3   E   2013         Z
6   4   G   2012         P
7   7   P   2013         P

请展示一个你想要它看起来像什么样的示例。