删除datafram中以非数字开头的列中的记录

2024-05-15 04:40:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个3列的数据帧,我想对OIB列执行健全性检查,以删除OIB下以非number开头的观察值

示例DF如下:我想删除3行,其中OIB从non number开始

   subscriber_id          msisdn         oib

1:    BP12192064 385989105724 19958945074

2:    KP12192064 385989105774 09958945074

3:    KP12192064 385989105774 A9958945074

我在R里试过如下:

sym <- unique(df[!substr(oib, 1, 1) %in% (0:9), list(symb = substr(oib, 1, 1))])

df <- df[!substr(oib, 1, 1) %in% symbols[, symb]]

我希望上面的代码在Python中具有预期的输出:

subscriber_id          msisdn         oib

1:    BP12192064 385989105724 19958945074

2:    KP12192064 385989105774 09958945074

Tags: 数据id示例numberdfsubscriber健全性msisdn
3条回答
df[~df.oib.str.contains('[A-Za-z\W]', regex=True)]

输出

subscriber_id        msisdn          oib
1:    BP12192064  385989105724  19958945074
2:    KP12192064  385989105774  09958945074

也可以使用isnumericisdigit

例如:

import pandas as pd

df = pd.DataFrame({"subscriber_id": ["BP12192064", "KP12192064",  "KP12192064"],
                   "msisdn": ["385989105724", "385989105774", "385989105774"],
                   "oib": ["19958945074", "09958945074", "A9958945074"]})

print(df[df["oib"].str[0].str.isnumeric()])
print("--")
print(df[df["oib"].str[0].str.isdigit()])

可以将isinstring.digits一起使用:

from string import digits

df[df['oib'].str[0].isin(list(digits))]

相关问题 更多 >

    热门问题