繁体   English   中英

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

[英]Compare columns (per row) of two DataFrames in Python

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

我有两个内容部分相同的数据框(手机号码的一般概述,包括他们在公司的成本中心以及受影响手机号码及其发票金额的月度发票)。

我想将每月发票 DF的“手机号码”列的内容与通用概览 DF的“手机号码”列的内容进行比较,如果匹配,请将相应的成本中心分配给移动设备-每月发票 DF中的编号。

我很乐意与您分享我的代码,但不幸的是,我对如何以任何方式解决该问题的线索完全为零。

谢谢

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

期望结果示例

程序满足您的需求,在第二个数据帧中,我将值“40”以证明已填充的数据帧不会归零,如果您想要更好地解释数据帧之间的值相似,则替换只会发生程序,下面的评论,别忘了投票并标记为已解决,我还放了一些“打印”以便更好地查看,但总的来说它们不是必需的

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)


暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM