计算python pandas列中字母/数字前的空格字符



我有一个pandas数据框架,它看起来像这样:

columnA columnB
A        10
B       12
C      13
D      14
010     17

如何计算新列A中第一个字符串/数字/字母之前的空格字符?例如:

columnA columnB counter
A        10      0
B       12      1
C      13      2
D      14      2
010     17      1

可以组合str.extractstr.len:

df['counter'] = df['columnA'].str.extract('^( *)', expand=False).str.len()

输出(我在字符串周围添加了引号以方便显示):

columnA  columnB  counter
0     "A"       10        0
1    " B"       12        1
2   "  C"       13        2
3   "  D"       14        2
4  " 010"       17        1

可再生的输入:

df = pd.DataFrame({'columnA': ['A', ' B', '  C', '  D', ' 010'],
'columnB': [10, 12, 13, 14, 17],
'counter': [0, 1, 2, 2, 1]})

您可以使用str.findall然后提取第一项的len:

df['counter'] = df['columnA'].str.findall('^ *').str[0].str.len()
print(df)
# Output
columnA  columnB  counter
0       A       10        0
1       B       12        1
2       C       13        2
3       D       14        2
4     010       17        1

您可以使用RegExp与apply(),为什么不:

import pandas as pd
import re
df = pd.DataFrame({'columnA': ['A', ' B', '  C', '  D', ' 010'], 'columnB': [10, 12, 13, 14, 17]})
pattern = r'^s*'
def count_spaces(s):
return len(re.match(pattern, s).group())
df['counter'] = df['columnA'].apply(count_spaces)
print(df)

输出:

columnA  columnB  counter
0       A       10        0
1       B       12        1
2       C       13        2
3       D       14        2
4     010       17        1

相关内容

  • 没有找到相关文章

最新更新