亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

將所有值 str 列數據幀與其他數據幀 str 列匹配

將所有值 str 列數據幀與其他數據幀 str 列匹配

搖曳的薔薇 2022-08-25 15:05:51
我有兩個熊貓數據幀:數據幀 1:ITEM ID TEXT1       some random words2       another word3       blah 4       random words 數據幀 2:INDEX INFO1     random3     blah 我想將 INFO 列(數據幀 2)中的值與數據幀 1 的 TEXT 列進行匹配。如果有匹配項,我希望看到一個帶有“1”的新列。像這樣:ITEM ID TEXT                  MATCH1       some random words       12       another word  3       blah                    14       random words            1我能夠通過以下代碼行為每個 INFO 列的值創建一個匹配項:dataframe1.loc[dataframe1['TEXT'].str.contains('blah'), 'MATCH'] = '1'但是,實際上,我的真實數據幀 2 有 5000 行。所以我不能手動復制粘貼所有這些。但基本上我正在尋找這樣的東西:dataframe1.loc[dataframe1['TEXT'].str.contains('Dataframe2[INFO]'), 'MATCH'] = '1'我希望有人可以幫忙,謝謝!
查看完整描述

2 回答

?
慕田峪7331174

TA貢獻1828條經驗 獲得超13個贊

試一試:


法典:


dfA['MATCH']    = dfA['TEXT'].apply(lambda x: min(len([ y for y in dfB['INFO'] if y in x]), 1))

輸出:


   ITEM ID               TEXT  MATCH

0        1  some random words      1

1        2       another word      0

2        3               blah      1

3        4       random words      1

如果不是比賽,那就是0,但這很容易被淘汰。


可能有一個更好/更快的本機解決方案,但它通過迭代“TEXT”列和“INFO”來完成工作。根據您的使用案例,它可能足夠快。


看起來代替也會一樣好用。同樣,根據您的使用案例,可能會在時間上有所不同。.map().apply()


查看完整回答
反對 回復 2022-08-25
?
拉風的咖菲貓

TA貢獻1995條經驗 獲得超2個贊

更新以考慮字符串包含而不是完全匹配...


您可以從第一個數據幀中的列中獲取唯一值,將其轉換為 list,然后在第二個數據幀上使用 eval 方法,并在該列表中使用 Column.str.contains。


unique = df1['TEXT'].unique().tolist()

df2.eval("Match=Text.str.contains('|'.join(@unique))")


查看完整回答
反對 回復 2022-08-25
  • 2 回答
  • 0 關注
  • 94 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號