第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

比較數(shù)據(jù)框列與條件

比較數(shù)據(jù)框列與條件

慕碼人8056858 2021-08-24 18:29:22
我有 2 個數(shù)據(jù)框,如下所示:df1:ID   col1   col2    1     A1     B1    2     A2     B2     3     A3     B3   4     A4     B4   5     A5     B5    6     A6     B6    df2:col1   col2    A1     B1      A2     O5    H3     B3      A4     B4     A5     66      A6     C6     預(yù)期結(jié)果:我想根據(jù)條件生成結(jié)果 df - df1 的 col1,col2 中的每個值都應(yīng)存在于 df2 的 col1,col2 值中預(yù)期結(jié)果 df:ID   col1   col2     Error1     A1     B1      No mismatch with df22     A2     B2      col2 mismatch with df23     A3     B3      col1 mismatch with df24     A4     B4      No mismatch with df25     A5     B5      col2 mismatch with df26     A6     B6      col2 mismatch with df2
查看完整描述

2 回答

?
白板的微信

TA貢獻(xiàn)1883條經(jīng)驗 獲得超3個贊

使用字典理解創(chuàng)建助手 DataFrame 并與以下內(nèi)容進(jìn)行比較isin:


m = pd.DataFrame({c: ~df1[c].isin(df2[c]) for c in ['col1','col2']})

print (m)

    col1   col2

0  False  False

1  False   True

2   True  False

3  False  False

4  False   True

5  False   True

然后numpy.where使用 mask byany測試True每行至少一個,并dot使用矩陣乘法獲取列名:


df1['Error'] = np.where(m.any(axis=1), 

                        m.dot(m.columns + ', ').str.rstrip(', ') + ' mismatch with df2', 

                       'No mismatch with df2')

print (df1)

   ID col1 col2                   Error

0   1   A1   B1    No mismatch with df2

1   2   A2   B2  col2 mismatch with df2

2   3   A3   B3  col1 mismatch with df2

3   4   A4   B4    No mismatch with df2

4   5   A5   B5  col2 mismatch with df2

5   6   A6   B6  col2 mismatch with df2


查看完整回答
反對 回復(fù) 2021-08-24
?
慕娘9325324

TA貢獻(xiàn)1783條經(jīng)驗 獲得超4個贊

像這樣的事情應(yīng)該可以解決問題,但可能有更簡單的方法。


diff = pd.concat([df1[col] == df2[col] for col in df1], axis=1)


def m(row):

    mismatches = []

    for col in diff.columns:

        if not row[col]:

            mismatches.append(col)

    if mismatches == []:

        return 'No mismatch'

    return 'Mismatches: ' + ', '.join(mismatches)


df1['Error'] = diff.apply(m, axis=1)


查看完整回答
反對 回復(fù) 2021-08-24
  • 2 回答
  • 0 關(guān)注
  • 235 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號