[英]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.