【发布时间】:2014-05-04 02:57:02
【问题描述】:
我有两个数据框df1 和df2,它们是从同一来源计算的,但使用不同的方法,因此大多数值是相同的,但存在一些差异。现在,我想根据df2 中的值更新df1。
例如:
df1 = pd.DataFrame({'name':['john','deb','john','deb'], 'col1':[490,500,425,678], 'col2':[456,625,578,789],'col3':['TN','OK','OK','NY']})
name col1 col2 col3
john 490 456 TN
deb 500 625 OK
john 425 578 OK
deb 678 789 NY
df2 = pd.DataFrame({'name':['deb','john','deb','john','deb'], 'col1':[400,490,500,425,678], 'col2':[225,456,625,578,789],'col3':['TN','TN','OK','OK','NY']})
name col1 col2 col3
deb 400 225 TN
john 490 456 TN
deb 500 625 OK
john 425 578 OK
deb 678 789 NY
因此,在这种情况下,.append 应该只将第一行从df2 附加到df1。因此,只有在 df2 中存在 df1 中不存在的新行(基于名称和 col3)时,才会添加/更新该列,否则不会。
这似乎是concat 应该做的事情。
【问题讨论】:
-
为什么应该只附加该行?具体来说,您如何决定需要哪些行?
-
对不起,我忘了在 df2 中插入一行。希望这很清楚。
col3是一个类别变量,所以类别中是否有新的name,您可以追加。 -
换一种说法:你想连接两个帧然后删除重复的?或者,如果有涉及来自俄克拉荷马州的 Deb 的新行——比如
deb 1000 2000 OK——您是否要删除原来的deb 500 625 OK行? -
简单地说,我只想添加一个唯一的行(基于两列)。删除重复项的一个警告是,我如何确保仅保留 df1 的值?
标签: python python-2.7 pandas