比较 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)
首先,我对整体编程还很陌生(< 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)