我有一列包含數字和它們之間的這些字符之一-、/、*、~、_。我需要檢查值是否包含任何字符,然后將值拆分到另一列中。有沒有與下面顯示的不同的解決方案?最后,列 subnumber1, subnumber2 ...subnumber5 將合并為一列,列“number5”將沒有字符。我需要在進一步的程序中使用這兩列。我是 Python 的新手,所以歡迎任何建議。
if gdf['column_name'].str.contains('~').any():
gdf[['number1', 'subnumber1']] = gdf['column_name'].str.split('~', expand=True)
gdf
if gdf['column_name'].str.contains('^').any():
gdf[['number2', 'subnumber2']] = gdf['column_name'].str.split('^', expand=True)
gdf
Input column:
column_name
152/6*3
163/1-6
145/1
163/6^3
output:
number5 |subnumber1 |subnumber2
152 | 6 | 3
163 | 1 | 6
145 | 1 |
163 | 6 | 3
uj5u.com熱心網友回復:
Series.str.split與可能的分隔符串列一起使用并創建新的 DataFrame:
import re
L = ['-','/','*','~','_','^', '.']
#some values like `^.` are escape
pat = '|'.join(re.escape(x) for x in L)
df = df['column_name'].str.split(pat, expand=True).add_prefix('num')
print (df)
num0 num1 num2
0 152 6 3
1 163 1 6
2 145 1 None
3 163 6 3
uj5u.com熱心網友回復:
使用str.split:
df['column_name'].str.split(r'[*,-/^_]', expand=True)
輸出:
0 1 2
0 152 6 3
1 163 1 6
2 145 1 None
3 163 6 3
或者,如果您事先知道您有 3 個數字,請使用str.extract并命名捕獲組:
regex = '(?P<number5>\d )\D*(?P<subnumber1>\d*)\D*(?P<subnumber2>\d*)'
df['column_name'].str.extract(regex)
輸出:
number5 subnumber1 subnumber2
0 152 6 3
1 163 1 6
2 145 1
3 163 6 3
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/427048.html
上一篇:洗掉字典串列中得分低的重復項
