在中断了4年之后,我正在尝试用Python编写代码,并且在实现我的想法时遇到了困难。我有两个大的excel表,其中包含超过12k x 70的值,两者都有相同的列数和列名。我已经为两个 Dataframe 创建了一个主键,现在我想比较一个工作表的主键与另一个工作表的主键的值,当有匹配时,我想将旧工作表中的某些值(不是全部)替换到新工作表中。
例如df1:
A B C D E F
1 2 3 4 5 6
7 8 9 10 11 12
13 14 15 16 17 18
df2:
A B C D E F
19 20 21 22 23 6
25 26 27 28 29 12
31 32 33 34 35 19
当操作完成后,我需要它看起来像这样的df1:
A B C D E F
1 2 21 22 23 6
7 8 27 28 29 12
13 14 15 16 17 18
列F是主键
我尝试了以下方法,但它给出了一个非常奇怪的输出
for i in df2['F']:
for j in df1['F']:
if i==j:
df1['D'] = df2['D'].astype(str)
df1['E'] = df2['E'].astype(str)
df1['C'] = df2['C'].astype(str)
3条答案
按热度按时间4zcjmb1e1#
可以使用
update
:输出:
uplii1fm2#
定制合并到您似乎想要从每个输入 Dataframe 中获得的列:
这将在df1和df2共有的F列的匹配值上合并。
zhte4eai3#
Merge可以用于:
请注意,如果两个 Dataframe 具有相同的列名,则new_df将包含带有'_x'和'_y'后缀的新列名。
合并后,您可以决定保留哪些列
要仅复制存在的值,您可以:
仅当新值不为空时,它才会更新单元格