我正在研究一個測驗資料集,它是
print(df.head(10))
0 NaN
1 93/2; 99/3; 05/4;
2 NaN
3 NaN
4 NaN
5 NaN
現在我想轉換字串“93/2; 99/3; 05/4;” 為以下分析提供更整潔的資料結構。因此,第一步將在“;”上如此分裂
df= df.apply(lambda x: x.split(';'))
產生
0 []
1 [93/2, 99/3, 05/4, ]
2 []
3 []
4 []
5 []
6 []
7 []
8 []
9 []
如您所見,串列的最后一個元素是一個空值,我想洗掉它。我正在考慮使用該.pop()功能,但會產生
df = df.apply(lambda x: x.pop())
print(df.head(10))
0
1
2
3
4
5
6
7
8
9
如果我使用切片
df = df.apply(lambda x: x[:-1])
我得到了預期的輸出
0 []
1 [93/2, 99/3, 05/4]
2 []
3 []
4 []
5 []
6 []
7 []
8 []
9 []
誰能解釋一下為什么 pop 功能不能像我預期的那樣在這里作業?
先感謝您!
uj5u.com熱心網友回復:
有一個矢量函式來分割字串str.split,一個分割strip字符:
假設這里有一個資料框,盡管您的示例可能表明您有一個系列:
# strip trailing ; # split on ;
df['lst'] = df['col'].str.rstrip(';').str.split(';\s*')
如果系列:
ser2 = ser.str.rstrip(';').str.split(';\s*')
輸出:
col lst
0 NaN NaN
1 93/2; 99/3; 05/4; [93/2, 99/3, 05/4]
2 NaN NaN
3 NaN NaN
4 NaN NaN
5 NaN NaN
uj5u.com熱心網友回復:
有用。您將回傳分配給pop()您的df. pop()回傳被彈出的元素。您將該元素分配給您的df。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/444922.html
