在数据帧中切片字符串

时间:2019-01-09 22:57:18

标签: python python-3.x pandas

我有一个看起来像这样的数据框(之前)。

function onFormSubmit(){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
   var millionaire24 = ss.getSheetByName('Millionaire24.');
    var cellValue = millionaire24.getRange(3,6,1,1).getValues();
  Number(cellValue)
if(cellValue[0] >= 1000000)switchHotSeat();


}

如何使它看起来像这样(之后)?

BEFORE:
string
Oct 05 
190103  

3 个答案:

答案 0 :(得分:1)

您可以使用正则表达式来匹配字符串的最后一个空格和字符串的最后一个句点之间的最后一个连续数字序列。使用:

\s[^\s]+?(\d+)\.[^\.]+?$

str.extract

df['string'].str.extract(r'\s[^\s]+?(\d+)\.[^\.]+?$')

        0
0  181004
1  181004
2  181004
3  181106
4  181106
5  190102
6  190103
7   51811

正如注释中所指出的那样,您的最后一行应为51811,否则您在整个DataFrame中都不会使用一致的规则。


正则表达式说明

\s                    # match a whitespace character
[^\s]+?               # match a non whitespace character between 1 and unlimited times, lazy
(                     # start of matching group 1
  \d+                 # match 1 or more digits          
)         
\.                    # match a period character
[^\.]+?               # match a non period character one to unlimited times, lazy
$                     # assert position at end of line

答案 1 :(得分:0)

您可以使用像这样的正则表达式:https://stackoverflow.com/a/54119901/9962315

或使用下面的代码,它也可以很好地处理您的数据。

firebase deploy --only firestore:indexes

答案 2 :(得分:-1)

一个简单的正则表达式似乎很好用:

/[A-Z]\d(\d+)\./

它还将处理CAE51811应该输出1811而不输出51811的情况。