簡體   English   中英

在 Pandas 中索引數據框列

[英]Indexing a dataframe column in Pandas

如何在 pandas 的列中索引值並將其變為新列? 這就是我想要做的:

Original:

       Data    
0  0010-AAAA    
1  0010-BBBB    
2  0010-CCCC    
3  0011-DDDD    
4  0011-EEEE    

Adding two columns:
       Data    col_2   col_3  
0  0010-AAAA    0010    AAAA
1  0010-BBBB    0010    BBBB
2  0010-CCCC    0010    CCCC
3  0011-DDDD    0011    DDDD
4  0011-EEEE    0011    EEEE

看起來您需要split

df[['col_2', 'col_3']] = df['Data'].str.split('-', n=1, expand=True)

輸出:

        Data col_2 col_3
0  0010-AAAA  0010  AAAA
1  0010-BBBB  0010  BBBB
2  0010-CCCC  0010  CCCC
3  0011-DDDD  0011  DDDD
4  0011-EEEE  0011  EEEE

沒有破折號

然后使用帶有str.extract的正則表達式。

在這種情況下:數字\d+ ,后跟非數字\D+

df[['col_2', 'col_3']] = df['Data'].str.extract(r'(\d+)(\D+)')

輸出:

       Data col_2 col_3
0  0010AAAA  0010  AAAA
1  0010BBBB  0010  BBBB
2  0010CCCC  0010  CCCC
3  0011DDDD  0011  DDDD
4  0011EEEE  0011  EEEE

甚至: r'(\d+)\W*(\D+)' (digits / optional non-alphanum / non-digits) 同時處理這兩種情況:

df[['col_2', 'col_3']] = df['Data'].str.extract(r'(\d+)\W*(\D+)')

例子:

        Data col_2 col_3
0  0010-AAAA  0010  AAAA
1   0010BBBB  0010  BBBB
2  0010-CCCC  0010  CCCC
3   0011DDDD  0011  DDDD
4  0011-EEEE  0011  EEEE
df[['col_2','col_3']]= df['Data'].str.split("-",expand=True)
df
Data    col_2   col_3
0   0010-AAAA   0010    AAAA
1   0010-BBBB   0010    BBBB
2   0010-CCCC   0010    CCCC
3   0011-DDDD   0011    DDDD
4   0011-EEEE   0011    EEEE

所有 python 字符串方法都可以工作,包括切片

df["Data"].str[:4]

0    0010
1    0010
2    0010
3    0011
4    0011

暫無
暫無

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

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