我有一个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.extract
和str.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