簡體   English   中英

將一個pandas列文本拆分為多個列

[英]split one pandas column text to multiple columns

例如,我有一個pandas列包含

text
A1V2
B2C7Z1

我想將它拆分為26(AZ)列,其中字母跟隨值,如果缺少,則為-1。

所以,它可以

text    A  B  C  D ...  Z
A1V2    1  -1 -1 -1 ... -1
B2C7Z1 -1  2  7  -1 ... 1

有沒有快速的方式,而不是使用df.apply()?

跟進感謝Psidom的精彩回答。 當我使用該方法運行4百萬行時,我花了1個小時。 我希望有另一種方法可以讓它更快。 似乎str.extractall()是最耗時的。

嘗試str.extractall與正則表達式(?P<key>[AZ])(?P<value>[0-9]+)將密鑰( [AZ] )值( [0-9] + )提取到單獨的列中從長到寬的變換應該會讓你到那里。

這里的正則表達式(?P<key>[AZ])(?P<value>[0-9]+)letterDigits模式匹配,兩個捕獲組在結果中分為兩列,分別為列 (帶?P<>語法);

由於extractall將多個匹配放入單獨的行中,因此您需要將其轉換為寬格式,並在key列上使用unstack

(df.text.str.extractall("(?P<key>[A-Z])(?P<value>[0-9]+)")
 .reset_index('match', drop=True)
 .set_index('key', append=True)
 .value.unstack('key').fillna(-1))

#key    A   B   C   V   Z
#  0    1  -1  -1   2  -1
#  1   -1   2   7  -1   1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM