Pandas 结合 2 个数据框并覆盖值
Posted
技术标签:
【中文标题】Pandas 结合 2 个数据框并覆盖值【英文标题】:Pandas combine 2 Dataframes and overwrite values 【发布时间】:2018-02-07 17:57:24 【问题描述】:我研究了 pandas join、merge、concat 与不同的参数值(如何加入、索引、axis=1 等),但没有解决它!
我有两个数据框:
x = pd.DataFrame(np.random.randn(4,4))
y = pd.DataFrame(np.random.randn(4,4),columns=list(range(2,6)))
x
Out[67]:
0 1 2 3
0 -0.036327 -0.594224 0.469633 -0.649221
1 1.891510 0.164184 -0.010760 -0.848515
2 -0.383299 1.416787 0.719434 0.025509
3 0.097420 -0.868072 -0.591106 -0.672628
y
Out[68]:
2 3 4 5
0 -0.328402 -0.001436 -1.339613 -0.721508
1 0.408685 1.986148 0.176883 0.146694
2 -0.638341 0.018629 -0.319985 -1.832628
3 0.125003 1.134909 0.500017 0.319324
我想合并到一个数据框,其中第 2 列和第 3 列中 y 的值覆盖 x 的值,然后在末尾插入第 4 列和第 5 列:
new
Out[100]:
0 1 2 3 4 5
0 -0.036327 -0.594224 -0.328402 -0.001436 -1.339613 -0.721508
1 1.891510 0.164184 0.408685 1.986148 0.176883 0.146694
2 -0.383299 1.416787 -0.638341 0.018629 -0.319985 -1.832628
3 0.097420 -0.868072 0.125003 1.134909 0.500017 0.319324
【问题讨论】:
【参考方案1】:你可以试试combine_first
:
df = y.combine_first(x)
【讨论】:
【参考方案2】:你需要update
和combine_first
x.update(y)
x.combine_first(y)
Out[1417]:
0 1 2 3 4 5
0 -1.075266 1.044069 -0.423888 0.247130 0.008867 2.058995
1 0.122782 -0.444159 1.528181 0.595939 0.155170 1.693578
2 -0.825819 0.395140 -0.171900 -0.161182 -2.016067 0.223774
3 -0.009081 -0.148430 -0.028605 0.092074 1.355105 -0.003027
或者你使用 pd.concat + intersection
pd.concat([x.drop(x.columns.intersection(y.columns),1),y],1)
Out[1432]:
0 1 2 3 4 5
0 -1.075266 1.044069 -0.423888 0.247130 0.008867 2.058995
1 0.122782 -0.444159 1.528181 0.595939 0.155170 1.693578
2 -0.825819 0.395140 -0.171900 -0.161182 -2.016067 0.223774
3 -0.009081 -0.148430 -0.028605 0.092074 1.355105 -0.003027
【讨论】:
@jp_data_analysis 第 2 列和第 3 列中 y 的值覆盖 您可以查看pandas.pydata.org/pandas-docs/stable/generated/…中的示例 但根据您的链接,y.combine_first(x)
肯定优先于y
?我已经测试过了,它似乎可以工作。
@jp_data_analysis 是的,但我使用的是 x.combine_first(y),这就是我需要更新的原因
同意,我明白了。我想品种很好:)。我们的两种解决方案都有效。
@pynewbie yw:-)以上是关于Pandas 结合 2 个数据框并覆盖值的主要内容,如果未能解决你的问题,请参考以下文章