[英]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.