如何检查Python数据帧列中的第一个字符是否为数字

时间:2017-03-31 16:00:51

标签: python dataframe

我在Python数据框中有一些地址信息,我想检查其中一列的第一个字符是否为数字。我发现了类似的查询,但在数据框中没有任何内容。我可以使用以下方法提取第一个字符没问题:

check = df['ADDRESS_LINE_1'].str[0]

然而,如果我尝试

check = df['ADDRESS_LINE_1'].str[0].isdigit()

我收到错误

'Series' object has no attribute 'isdigit'

我找不到一个等效的代码来让它在数据帧中工作。我也尝试使用检查信息创建一个新列,但这会导致相同的错误。任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:2)

你需要链接另一个images=[] for i in range(1,500): img1= img1.flatten() img2=img2.flatten() #saving the image images.append(img1) images.append(img2) img_arr = np.stack(images, axis=0) print(len(images)) print(img_arr) print(img_arr.shape)

str

示例:

check = df['ADDRESS_LINE_1'].str[0].str.isdigit()
                                   #^ here

您可以使用正则表达式专门定位第一个字符是否为数字:

In [127]:
s = pd.Series(['3asd', 'asd', '3423', 'a123'])
s.str[0].str.isdigit()

Out[127]:
0     True
1    False
2     True
3    False
dtype: bool

错误告诉您In [128]: s.str.match('^\d') Out[128]: 0 True 1 False 2 True 3 False dtype: bool 不是isdigit的方法,str.isdigit

答案 1 :(得分:0)

另一种选择,你可以使用str.match来匹配字符串开头的正则表达式:

df
#     A
#0  2sdf
#1  sd3
#2  sss
#3  45q

df.A.str.match("\d")

#0     True
#1    False
#2    False
#3     True
#Name: A, dtype: bool