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

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

python數(shù)據(jù)表,列上的字符串操作

python數(shù)據(jù)表,列上的字符串操作

夢里花落0921 2023-10-26 15:15:37
from datatable import dt, f, g, by, update, join, sorttt = dt.Frame({'a' : ['A1','A2','A3'], 'b':[100,200,300]})print(tt)   | a     b-- + --  --- 0 | A1  100 1 | A2  200 2 | A3  300[3 rows x 2 columns]如何刪除a列中的“A”并將其作為數(shù)據(jù)表中的數(shù)字分配給新列“c”(即沒有熊貓)?在以下的幫助下它看起來像這樣pandastt['c'] = tt.to_pandas()['a'].str.replace('A','').astype(int)數(shù)據(jù)表本機版本不太有效tt[:, update(c = [int(x.replace('A','')) for x in f.a])]TypeError: 'datatable.FExpr' object is not iterable順便問一下,對于 python pandas 和 R data.table 的頻繁用戶,是否有一本高級/完整的食譜可以幫助從 R data.table 過渡到 py-datatable?網(wǎng)站上有一個頁面,但還不夠。
查看完整描述

3 回答

?
斯蒂芬大帝

TA貢獻1827條經(jīng)驗 獲得超8個贊

這是一個擴展性不是很好的 hack:

第 1 步:將a列轉儲到本機 python 中并創(chuàng)建一個值元組:

tuples?=?[(entry[0],?entry[-1])?for?entry??in?tt['a'].to_list()[0]]

第 2 步:cbind回框架tt

tt.cbind(dt.Frame(tuples))


tt



? ? a? ?b? ?C0? C1

0? ?A1? 100 A? ?1

1? ?A2? 200 A? ?2

2? ?A3? 300 A? ?3

如果你只需要 A,那么你可以使用下面的代碼,它仍然不能很好地擴展(想象你的列中有空值),并且很粗糙(我們必須索引到列表中才能得到我們想要的) :


tt["A_only"] = dt.Frame([entry[0] for entry in tt['a'].to_list()[0]])


tt


? ? ?a? ?b? ?A_only

0? ?A1? 100? ? ?A

1? ?A2? 200? ? ?A

2? ?A3? 300? ? ?A

如前所述,這不能很好地擴展。此外,它沒有提供數(shù)據(jù)表所期望的速度。


目前,數(shù)據(jù)表沒有很好的字符串操作支持(我相信庫維護者目前正在努力解決這個問題,以及其他一些要求的功能)


查看完整回答
反對 回復 2023-10-26
?
開心每一天1111

TA貢獻1836條經(jīng)驗 獲得超13個贊

我知道這是一個老問題,但萬一有人仍在尋找這個問題——在剛剛發(fā)布的 1.0.0 中,可以執(zhí)行以下操作:


tt = dt.Frame({'a' : ['A1','A2','A3'], 'b':[100,200,300]})

tt["A_only"] = tt[:, f.a[0:1]]

tt["num_only"] = tt[:, f.a[1:]]

tt["num_only"] = dt.Type.int8  # Change the type of the column to `int`

tt.ltypes

上面使用了字符串列上的切片,即依賴于固定格式。還有.re正則表達式的部分,但我只看到match,沒有看到extract。


查看完整回答
反對 回復 2023-10-26
?
三國紛爭

TA貢獻1804條經(jīng)驗 獲得超7個贊

這是我為了得到你想要的東西而做的一個技巧。我仍在學習數(shù)據(jù)表,所以請耐心等待我完全進入它。


首先,將數(shù)據(jù)表轉換為數(shù)據(jù)框。執(zhí)行我前面列出的操作,然后將數(shù)據(jù)幀轉換回數(shù)據(jù)表。Walla,您現(xiàn)在擁有一個包含所需結果的數(shù)據(jù)表。


我就是這樣做的。


from datatable import dt, f, g, by, update, join, sort

tt = dt.Frame({'a' : ['A1','A2','A3'], 'b':[100,200,300]})

df = tt.to_pandas()

df = df.join(df.a.str.extract('([a-zA-Z])([0-9])', expand=True).add_prefix('a'))

df = df.rename(columns = {'a0': 'c', 'a1': 'd'})

tt = dt.Frame(df)

tt

其輸出將是:

https://img1.sycdn.imooc.com/653a124100010c2a05720364.jpg

您可以拆分列并重命名字段。


import pandas as pd

df = pd.DataFrame({'a' : ['A1','A2','A3'], 'b':[100,200,300]})

print (df)

df = df.join(df['a'].str.split(r'(\d.*)', expand=True).add_prefix('a'))

df.drop('a2',axis = 1,inplace=True)

df = df.rename(columns = {'a0': 'c', 'a1': 'd'})

print (df)

輸出將是:


初始數(shù)據(jù)框將是:


    a    b

0  A1  100

1  A2  200

2  A3  300

新的 DataFrame 將如下所示:


    a    b  c  d

0  A1  100  A  1

1  A2  200  A  2

2  A3  300  A  3

或者,您也可以使用extract正則表達式來完成此操作。


import pandas as pd

df1 = pd.DataFrame({'a' : ['A1','A2','A3'], 'b':[100,200,300]})

df1 = df1.join(df1.a.str.extract('([a-zA-Z])([0-9])', expand=True).add_prefix('a'))

df1 = df1.rename(columns = {'a0': 'c', 'a1': 'd'})

print (df1)

它會給你相同的結果:


    a    b

0  A1  100

1  A2  200

2  A3  300

在此選項中,它不會創(chuàng)建需要刪除的附加列


    a    b  c  d

0  A1  100  A  1

1  A2  200  A  2

2  A3  300  A  3


查看完整回答
反對 回復 2023-10-26
  • 3 回答
  • 0 關注
  • 154 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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