比较 Python 中两个 DataFrame 的列(每行)

Compare columns (per row) of two DataFrames in Python

首先,我对整体编程还很陌生(< 2 个月),所以很抱歉,如果这是一个'简单,无需寻求帮助,自己尝试直到你搞定了'问题。

我有两个部分内容相同的数据框(手机号码的总体概览,包括公司的成本中心受影响手机号码的月度发票和他们的发票金额)。

我想比较 每月发票 DF 的 'mobile-numbers' 列的内容与 'mobile-numbers' 列的内容 概览 DF 如果匹配,则将相应的成本中心分配给 月度发票 DF.

中的手机号码

我很乐意与您分享我的代码,但不幸的是,我对如何以任何方式解决该问题一无所知。

谢谢

编辑:我来自德国,我尽力用英语解释问题。如果我搞砸了什么(所以你不明白)请告诉我:)

Example of desired result

程序满足你的需要,在第二个数据框中我把值'40'演示已经填充的数据帧不会被归零,只有当数据帧之间有相似的值时才会发生替换,如果你想要对程序有更好的解释,请在下面评论,不要忘记投票并标记为已解决,我还放了一些 'prints' 以便更好地查看,但一般来说它们不是必需的

import pandas as pd

general_df = pd.DataFrame({"mobile_number": [1234,3456,6545,4534,9874],
                           "cost_center": ['23F','67F','32W','42W','98W']})

invoice_df = pd.DataFrame({"mobile_number": [4534,5567,1234,4871,1298],
                           "invoice_amount": ['19,99E','19,99E','19,99E','19,99E','19,99E'],
                            "cost_center": ['','','','','40']})
print(f"""GENERAL OVERVIEW DF

{general_df}

________________________________________
INVOICE DF


{invoice_df}


_________________________________________
INVOICE RESULT
""")
def func(line):
    t = 0
    for x in range(0, len(general_df['mobile_number'])):
        t = general_df.loc[general_df['mobile_number'] == line[0]]
    if t.empty:
        return line[2]
    else:
        return t.values.tolist()[0][1]

invoice_df['cost_center'] = invoice_df.apply(func, axis = 1)

print(invoice_df)