前言:有兩張表,有一個關鍵字段作爲連接,要比對兩張表裏某個值的變化,用Python該怎麼寫呢?
excel很簡單,vlookup+if即可;SQL裏的話,就是left join,然後再case when
python裏的思路也是一樣,我們需要merge後再apply
以下表爲例
如果不用lambda,只用apply的話,代碼如下:
import pandas as pd
def get_value(df):
'''計算兩個原資費和現資費的大小,增值的返回1,否則返回0'''
if df['套餐資費2'] > df['套餐資費1']:
return 1
else:
return 0
t1 = pd.read_excel('test.xlsx', sheet_name='Sheet1')
t2 = pd.read_excel('test.xlsx', sheet_name='Sheet2')
new_df = t1.merge(t2, how='left', on='手機號碼')
new_df['資費對比結果'] = new_df.apply(get_value, axis=1)
print(new_df)
如果使用lambda+apply組合的話,代碼如下:
import pandas as pd
t1 = pd.read_excel('test.xlsx', sheet_name='Sheet1')
t2 = pd.read_excel('test.xlsx', sheet_name='Sheet2')
new_df = t1.merge(t2, how='left', on='手機號碼')
new_df['資費對比結果'] = new_df.apply(lambda x: 1 if x['套餐資費2'] > x['套餐資費1'] else 0, axis=1)
print(new_df)
要節省很多代碼行數,而且也更簡單明瞭