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

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

如何從熊貓的另一列中減去字符串類型的列值

如何從熊貓的另一列中減去字符串類型的列值

ITMISS 2021-11-16 16:14:08
我有一個這樣的數(shù)據(jù)框dfcol1         col2          col3 A        black berry      black B        green apple      green C        red wine          red我想從 col2 值中減去 col3 值,結(jié)果看起來像df1col1        col2        col3  A         berry       black  B         apple       green  C          wine        red如何使用熊貓以有效的方式做到這一點
查看完整描述

1 回答

?
揚帆大魚

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

list comprehension與replace和 一起使用split:


df['col2'] = [a.replace(b, '').strip() for a, b in zip(df['col2'], df['col3'])]

print (df)

  col1   col2   col3

0    A  berry  black

1    B  apple  green

2    C   wine    red

如果順序不重要,則將拆分的值轉(zhuǎn)換為集合并減去:


df['col2'] = [' '.join(set(a.split())-set([b])) for a, b in zip(df['col2'], df['col3'])]

print (df)

  col1   col2   col3

0    A  berry  black

1    B  apple  green

2    C   wine    red

或者使用帶有if條件和的生成器join:


df['col2'] = [' '.join(c for c in a.split() if c != b) for a, b in zip(df['col2'], df['col3'])]

性能:

http://img1.sycdn.imooc.com//619368720001d47d03980266.jpg

這是用于生成上面的perfplot的設(shè)置:


def calculation(val):

    return val[0].replace(val[1],'').strip()



def regex(df):

    df.col2=df.col2.replace(regex=r'(?i)'+ df.col3,value="")

    return df

def lambda_f(df):

    df["col2"] = df.apply(lambda x: x["col2"].replace(x["col3"], "").strip(), axis=1)

    return df


def apply(df):

    df['col2'] = df[['col2','col3']].apply(calculation, axis=1)

    return df

def list_comp1(df):

    df['col2'] = [a.replace(b, '').strip() for a, b in zip(df['col2'], df['col3'])]

    return df


def list_comp2(df):

    df['col2'] = [' '.join(set(a.split())-set([b])) for a, b in zip(df['col2'], df['col3'])]

    return df


def list_comp3(df):

    df['col2'] = [' '.join(c for c in a.split() if c != b) for a, b in zip(df['col2'], df['col3'])]

    return df



def make_df(n):

    d = {'col1': {0: 'A', 1: 'B', 2: 'C'}, 'col2': {0: 'black berry', 1: 'green apple', 2: 'red wine'}, 'col3': {0: 'black', 1: 'green', 2: 'red'}}

    df = pd.DataFrame(d)

    df = pd.concat([df] * n * 100, ignore_index=True)

    return df

perfplot.show(

    setup=make_df,

    kernels=[regex, lambda_f, apply, list_comp1,list_comp2,list_comp3],

    n_range=[2**k for k in range(2, 10)],

    logx=True,

    logy=True,

    equality_check=False,  # rows may appear in different order

    xlabel='len(df)')


查看完整回答
反對 回復(fù) 2021-11-16
  • 1 回答
  • 0 關(guān)注
  • 161 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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