[英]Comparing dataframes with different sizes in pandas and create new column based on comparison
我正在通過 pyodbc 2 數據幀導入:df1 和 df2。
它們很大,我需要比較它們。
PS:它們的尺寸不一樣。
3 列大小的數據框:
我想做的事:
如果 CODUSU 列相等,則 df2[Situação] = 'K'
我做了什么,但它太慢了:
for i in range(0,len(df2)):
for k in range(0,len(df1)):
if df2.loc[i][0] == df1.loc[k][0]:
df2[i]["Situação"] = "K"
我還需要:
如果在 df1[CODUSU] 中而不在 df2[CODUSU] 中,則 df2[Situação] = 'Q'
如果在 df2[CODUSU] 中而不是在 df1[CODUSU] 中,則 df2[Situação] = 'B'
您應該對數據框進行外部合並,要求提供指標變量:
resul = df2.merge(df1, how='outer', on='A', suffixes=('', '_y'),indicator=True)
不要忘記僅來自df1
行的DTDOSE
列:
resul.loc[resul['indicator'] == 'right_only', 'DTDOSE'] = resul.loc[
resul['indicator'] == 'right_only', 'DTDOSE_y']
是時候計算Situação
列的新值了:
resul.loc[resul['indicator'] == 'both', 'Situação'] = 'K'
resul.loc[resul['indicator'] == 'right_only', 'Situação'] = 'Q'
resul.loc[resul['indicator'] == 'left_only', 'Situação'] = 'B'
最后去掉輔助列:
resul = resul[['CODUSU', 'DTDOSE', 'Situação']
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.