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

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

通過比較兩個不相等的數據幀的字符串來創建新的數據幀列

通過比較兩個不相等的數據幀的字符串來創建新的數據幀列

慕的地6264312 2021-06-07 17:46:10
df1['Description']當df1['a']字符串等于df2['b']字符串時,Python 中創建新數據框列的最有效方法是什么?當條件滿足時,一個單獨的字符串df2['Description']將被分配給df1['Description']。df1并且df2是大小不等的大型數據框(約 1/2 百萬行)。df1:a    bZ0   1  Z1   2A7   3df2:b    DescriptionW2   asadsde  Z0   evrverveA7   eveveerv我想:df1a    b   DescriptionZ0   1   evrverve  Z1   2   jsbdbcjeA7   3   eveveerv
查看完整描述

2 回答

?
RISEBY

TA貢獻1856條經驗 獲得超5個贊

用 pandas.merge

import pandas as pd


df1 = pd.DataFrame([['Z0', 1],['Z1', 2], ['A7', 3]], columns=['a', 'b'])

    

    a  b

0  Z0  1

1  Z1  2

2  A7  3

    

df2 = pd.DataFrame([['W2', 'asadsde'], ['Z0', 'evrverve'], ['A7', 'eveveerv'], ['Z1', 'jsbdbcje']], columns=['a', 'Description'])

    

    a Description

0  W2     asadsde

1  Z0    evrverve

2  A7    eveveerv

3  Z1    jsbdbcje

    

df3 = pd.merge(left=df1, right=df2, on='a', )

    

    a  b Description

0  Z0  1    evrverve

1  Z1  2    jsbdbcje

2  A7  3    eveveerv


查看完整回答
反對 回復 2021-06-09
?
慕桂英3389331

TA貢獻2036條經驗 獲得超8個贊

考慮到這些是您的數據幀:


df1

a    b

Z0   1  

Z1   2

A7   3


df2

b   Description

W2  asadsde

Z0  evrverve

A7  eveveerv

Z1  jsbdbcje

使用map和實現所需輸出的代碼assign:


df1.assign(description = df1['a'].map(dict(df2.values)))



    a   b   description

0   Z0  1   evrverve

1   Z1  2   jsbdbcje

2   A7  3   eveveerv

在 df1 中,如果您只想要匹配的行,則使用dropna:


df1.dropna(inplace=True)


查看完整回答
反對 回復 2021-06-09
  • 2 回答
  • 0 關注
  • 181 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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