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
请展示一个你想要它看起来像什么样的示例。