1
我有一個數據幀[「阿魯」]是這樣的:爲什麼我不能在熊貓中將列分成兩列?
df.anno
0 type I secretion outer membrane protein, TolC...
1 conserved hypothetical protein [Shigella boyd...
2 Transposase [Congregibacter litoralis KT71]
3 Chain A, The Crystal Structure Of Chlorite Di...
4 chlorite dismutase, partial [uncultured bacte...
5 carbamoyl-phosphate synthase, small subunit [...
6 anthranilate synthase component 1 [endosymbio...
7 chlorite dismutase, partial [bacterium enrich...
8 peptidase dimerization domain protein [Myroid...
9 MULTISPECIES: MFS transporter [Enterobacteria...
10 CAAX amino terminal protease family protein [...
11 Fe-S oxidoreductase [Desulfovibrio africanus ...
12 phosphoenolpyruvate synthase/pyruvate phospha...
因爲有兩個部分的每一行中:1:蛋白名稱。 2.具有'[......]'的微生物物種。
我想提取蛋白質名稱部分並丟棄微生物物種,所以我決定首先將該列分成兩列,位置爲'[''。
df2 = pd.DataFrame(df.anno.str.split("[", 1).tolist(), columns = ['protein','species'])
它返回一個錯誤:
TypeError: object of type 'NoneType' has no len()
我也試過:
df[['protein','species']] = df['anno'].str.split('[', expand=True)
它也返回了一個錯誤:
ValueError: Columns must be same length as key
如何做到這一點?有沒有其他的方法來提取蛋白質名稱? 謝謝!
非常感謝。有效!一個問題:對於行[3],其值如下:'鏈A,亞氯酸鹽歧化酶的晶體結構:產生分子氧的排毒酶' 它沒有物種名稱。如果我運行這個命令,它會給我帶來「蛋白質」和「物種」的NaN。如果我想保留蛋白質名稱,我應該怎麼做? – stevex
帶'str.split'的解決方案應該可以工作。 – jezrael
問題是該列中的某些值沒有「[物種名稱..]」。如果我使用str.extract,它將返回NaN。如果我使用str.split,它會返回錯誤。 – stevex