我從網上提取了一些賭博資料并匯出到Excel。現在試圖清理幾列。
每支球隊的差價被拉入同一列。我能夠提取除整數之外的每一個。
代碼:
df['Away Spread'] = df['Open'].str.extract(pat= '([- A-Z].[^-/ ].[0-9]?)').fillna(df['Open'].str[0:2])
輸出:
![嘗試用同一列的 [0:2] 索引替換 NaN](https://img.uj5u.com/2021/10/29/eee0e75b428541829cd2858a2f88c302.png)
期望輸出:
![嘗試用同一列的 [0:2] 索引替換 NaN](https://img.uj5u.com/2021/10/29/8dc2c98d82624aefb685d0f4b50585ef.png)
最佳輸出:
![嘗試用同一列的 [0:2] 索引替換 NaN](https://img.uj5u.com/2021/10/29/cf7b9186b7a247a9a22ede493ba80123.png)
如果不能在一行中完成最好的輸出,請不要告訴我。我應該能夠將“Away Spread”轉換為浮動,然后將“Home Spread”設定為相反。我不禁覺得我在正則運算式模式中遺漏了一些東西。
感謝所有看過的人!
uj5u.com熱心網友回復:
您可以通過查找 或的第二個實體直接在 Excel 中執行此操作-
上半場
=LEFT(A1,MAX(FIND(" ",A1),FIND("-",A1))-1)
下半場
=RIGHT(A1,LEN(A1)-LEN(B1))
![嘗試用同一列的 [0:2] 索引替換 NaN](https://img.uj5u.com/2021/10/29/df29e816f3834ffab6fa0de7fb2b8ade.png)
uj5u.com熱心網友回復:
您可以使用
df['Away Spread'] = df['Open'].str.extract(r'([- ]?\d*\.?\d )', expand=False).fillna(df['Open'].str[0:2])
注意事項:
.extract(r'([- ]?\d*\.?\d )', expand=False)- 提取第一個正數或負數浮點數/整數(expand=False將確保結果是一個系列,而不是一個 df).fillna(df['Open'].str[0:2])將使用列中值的前兩個字符填充未發生匹配的值Open。
請參閱正則運算式演示(我添加^到僅匹配行的開頭,另請參閱m標志)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/340854.html
