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

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

將 pandas 數(shù)據(jù)框中的字符串拆分為 3 個(gè)(三元組)

將 pandas 數(shù)據(jù)框中的字符串拆分為 3 個(gè)(三元組)

小怪獸愛吃肉 2023-07-11 15:30:22
我有一個(gè)像這樣的 df:col1AAP CO. LTD.AAS dds dTdD.我正在嘗試創(chuàng)建一個(gè)函數(shù)來生成 pandas df 列,就像col2它分割col1每 3 個(gè)(或 n 個(gè))字符一樣:col1           col2AAP CO. LTD.   ['AAP','AP ','P C','CO.','O. '...]AAS dds dTdD.  ['AAS','AS ','S d','dds','ds '...]我已經(jīng)嘗試過這段代碼,但它只是為每一行重復(fù)相同的字符串列表......def trigram(self):    for b in df.parent_org_name:        a = ["".join(j) for j in zip(*[b[i:] for i in range(3)])]    #     [b[i:i+3] for i in range(len(b)-1)]    return a    #     print(a)    df.apply(trigram, axis=1)有任何想法嗎?
查看完整描述

3 回答

?
倚天杖

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

您可以添加更多邏輯,具體取決于如果您提供的N大于字符串長度的情況會發(fā)生什么(目前我在列表中返回原始字符串)。


字符串切片,將切片開始和停止索引增加 1,并確保到達(dá)字符串末尾后停止,否則可能會返回長度 <N 的子字符串。


import numpy as np


def split_str(s, N):

    rmax = np.clip(len(s)-N, a_min=0, a_max=None)+1

    return [s[0+i:N+i] for i in range(0, rmax)]


df['col1'].apply(lambda x: split_str(x, 3))

#0    [AAP, AP , P C,  CO, CO., O. , . L,  LT, LTD, ...

#1    [AAS, AS , S d,  dd, dds, ds , s d,  dT, dTd, ...

#Name: col1, dtype: object


# To show actual values

df['col1'].apply(lambda x: split_str(x, 3))[0]

#['AAP', 'AP ', 'P C', ' CO', 'CO.', 'O. ', '. L', ' LT', 'LTD', 'TD.']


查看完整回答
反對 回復(fù) 2023-07-11
?
繁花不似錦

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

我想這就是你所需要的:)。如果需要使用不同于 3 的參數(shù) n 來運(yùn)行它,那么他們可以相應(yīng)地更改括號中的 i+3


df["col2"] = df.apply(lambda x: [x[0][i:i+3] for i in range(0, len(x[0]))],axis=1) 

#The result looks as follows


   col1          col2

0  AAP CO. LTD.  [AAP, AP , P C,  CO, CO., O. , . L,  LT, LTD, ... 

1  AAS dds dTdD. [AAS, AS , S d,  dd, dds, ds , s d,  dT, dTd, ... 


查看完整回答
反對 回復(fù) 2023-07-11
?
慕斯王

TA貢獻(xiàn)1864條經(jīng)驗(yàn) 獲得超2個(gè)贊

不要循環(huán)遍歷所有行,而是更改函數(shù)定義,如下所示 -


def trigram(self):

    b=self.col1

    a = ["".join(j) for j in zip(*[b[i:] for i in range(3)])]

#        a = ["".join(j) for j in zip(*[b[i:] for i in range(3)])]

    #     [b[i:i+3] for i in range(len(b)-1)]

    return a


查看完整回答
反對 回復(fù) 2023-07-11
  • 3 回答
  • 0 關(guān)注
  • 215 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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