gpt4 book ai didi

python - 合并两个具有重叠索引的数据框,保留左侧数据框中的列值

转载 作者:行者123 更新时间:2023-12-04 14:46:20 24 4
gpt4 key购买 nike

我如何连接/合并两个具有部分重叠索引的 Pandas DataFrame,我希望生成的连接 DataFrame 保留第一个 DataFrame 中的列值,即删除 df2 中的重复项?

import pandas as pd
import io

df1 = """
date; count
'2020-01-01'; 210
'2020-01-02'; 189
'2020-01-03'; 612
'2020-01-04'; 492
'2020-01-05'; 185
'2020-01-06'; 492
'2020-01-07'; 155
'2020-01-08'; 62
'2020-01-09'; 15
"""
df2 = """
date; count
'2020-01-04'; 21
'2020-01-05'; 516
'2020-01-06'; 121
'2020-01-07'; 116
'2020-01-08'; 82
'2020-01-09'; 121
'2020-01-10'; 116
'2020-01-11'; 82
'2020-01-12'; 116
'2020-01-13'; 82
"""


df1 = pd.read_csv(io.StringIO(df1), sep=";")
df2 = pd.read_csv(io.StringIO(df2), sep=";")
print(df1)
print(df2)

我试过用

df1.reset_index().merge(df2, how='outer').set_index('date')

但是,这会降低连接的 df2 值。有没有一种方法可以保留第一个数据帧的重复行?

期望的结果:

print(df3)
date count
'2020-01-01' 210
'2020-01-02' 189
'2020-01-03' 612
'2020-01-04' 492
'2020-01-05' 185
'2020-01-06' 492
'2020-01-07' 155
'2020-01-08' 62
'2020-01-09' 15
'2020-01-10' 116
'2020-01-11' 82
'2020-01-12' 116
'2020-01-13' 82

非常感谢任何帮助,谢谢。

最佳答案

使用 combine_first:

df3 = (df1.set_index('date')
.combine_first(df2.set_index('date'))
.reset_index()
)

输出:

            date   count
0 '2020-01-01' 210
1 '2020-01-02' 189
2 '2020-01-03' 612
3 '2020-01-04' 492
4 '2020-01-05' 185
5 '2020-01-06' 492
6 '2020-01-07' 155
7 '2020-01-08' 62
8 '2020-01-09' 15
9 '2020-01-10' 116
10 '2020-01-11' 82
11 '2020-01-12' 116
12 '2020-01-13' 82

关于python - 合并两个具有重叠索引的数据框,保留左侧数据框中的列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69981260/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com