我有以下df
Trends Value
2021-12-13T08:00:00.000Z 45
2021-12-13T07:00:00.000Z 32
2021-12-13T06:42:10.000Z 23
2021-12-13T06:27:00.000Z 45
2021-12-10T05:00:00.000Z 23
我運行了以下行:
df['Trends'].str.extract('^(.*:[1-9][1-9].*)$', expand=True)
它回傳:
0
NaN
NaN
2021-12-13T06:42:10.000Z
2021-12-13T06:27:00.000Z
NaN
我的目標是使用正則運算式,提取任何分鐘和秒數大于零的趨勢。正則運算式有效(經過測驗)并且該行也有效,但我不明白為什么NaN它不匹配時會回傳?我查看了其他幾個 SO,這條線幾乎相同。
我的預期結果:
2021-12-13T06:42:10.000Z
2021-12-13T06:27:00.000Z
uj5u.com熱心網友回復:
您的解決方案很接近;您可以使用 str.match 獲取匹配項,然后過濾:
df[df.Trends.str.match('^(.*:[1-9][1-9].*)$')].Trends
輸出:
2 2021-12-13T06:42:10.000Z
3 2021-12-13T06:27:00.000Z
uj5u.com熱心網友回復:
先前的答案不適用于以下資料(其中分鐘是 00 但秒不是,反之亦然),但可以使用此更新的正則運算式。
df[df.Trends.str.match('^(?!.*:00:00\..*)(.*:[0-9] :[0-9] \..*)$')].Trends
要么
df[df.Trends.str.match('^(?!.*:00:00\..*)(.*:.*\..*)$')].Trends
或者如果秒無關緊要,但應該選擇 01 分鐘
df[df.Trends.str.match('^(?!.*:00:\d \..*)(.*:.*\..*)$')].Trends
Trends Value
2021-12-13T07:00:00.000Z 32
2021-12-13T07:00:01.000Z 32
2021-12-13T07:00:10.000Z 32
2021-12-13T07:01:00.000Z 32
2021-12-13T07:10:00.000Z 32
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/443794.html
標籤:Python python-3.x 正则表达式 熊猫 细绳
上一篇:在python中創建具有相同后綴或前綴的字串串列的最簡單方法是什么
下一篇:基于模板從字串中提取變數
