将单个数字替换为 'space and digit' Python 例如:ASSESSMENT _2/28
Replace single digit with 'space and digit' Python ex: ASSESSMENT _2/28
DF_Column: ASSESSMENT
ASSESSMENT 21/28, MISSED
ASSESSMENT 1/28, MISSED
ASSESSMENT 2/28, MISSED
ASSESSMENT 23/28, MISSED
ASSESSMENT 23/28, MISSED
ASSESSMENT 5/28, MISSED
我想要的 python:
ASSESSMENT
ASSESSMENT 21/28, MISSED
ASSESSMENT 1/28, MISSED
ASSESSMENT 2/28, MISSED
ASSESSMENT 23/28, MISSED
ASSESSMENT 23/28, MISSED
ASSESSMENT 5/28, MISSED
如果是singleDigit/28
,ASSESSMENT后应该有双space
这使用字段中的两个空格作为分隔符。然后它确保中间子字符串的长度为 6 个字符(包括空格)。我在一个由你的专栏制作的数组上测试了这个。
['{} {:>6} {}'.format(*i.split(' ')) for i in col]
这是我刚刚在数据帧上使用的代码
df['ASSESSMENT'] = ['{} {:>6} {}'.format(*i.split(' ')) for i in df['ASSESSMENT']]
您可以使用 Python re.sub to find the date pattern and replace with a new string, and Python rjust 重新对齐长度为 2 的字符串中的日期。
import pandas as pd
import re
df = pd.read_csv('sample.csv', sep='\n')
print(df)
def fix_alignment(m):
g1 = m.group(1).rjust(2, ' ')
g2 = m.group(2)
return f'{g1}/{g2}'
df['NewAlignment'] = df['ASSESSMENT'].apply(
lambda row: re.sub(r'\b(\d{1})/(\d{2})', fix_alignment, row)
)
print(df)
来自 df
的输出
ASSESSMENT NewAlignment
0 ASSESSMENT 21/28, MISSED ASSESSMENT 21/28, MISSED
1 ASSESSMENT 1/28, MISSED ASSESSMENT 1/28, MISSED
2 ASSESSMENT 2/28, MISSED ASSESSMENT 2/28, MISSED
3 ASSESSMENT 23/28, MISSED ASSESSMENT 23/28, MISSED
4 ASSESSMENT 23/28, MISSED ASSESSMENT 23/28, MISSED
5 ASSESSMENT 5/28, MISSED ASSESSMENT 5/28, MISSED
DF_Column: ASSESSMENT
ASSESSMENT 21/28, MISSED
ASSESSMENT 1/28, MISSED
ASSESSMENT 2/28, MISSED
ASSESSMENT 23/28, MISSED
ASSESSMENT 23/28, MISSED
ASSESSMENT 5/28, MISSED
我想要的 python:
ASSESSMENT
ASSESSMENT 21/28, MISSED
ASSESSMENT 1/28, MISSED
ASSESSMENT 2/28, MISSED
ASSESSMENT 23/28, MISSED
ASSESSMENT 23/28, MISSED
ASSESSMENT 5/28, MISSED
如果是singleDigit/28
,ASSESSMENT后应该有双space这使用字段中的两个空格作为分隔符。然后它确保中间子字符串的长度为 6 个字符(包括空格)。我在一个由你的专栏制作的数组上测试了这个。
['{} {:>6} {}'.format(*i.split(' ')) for i in col]
这是我刚刚在数据帧上使用的代码
df['ASSESSMENT'] = ['{} {:>6} {}'.format(*i.split(' ')) for i in df['ASSESSMENT']]
您可以使用 Python re.sub to find the date pattern and replace with a new string, and Python rjust 重新对齐长度为 2 的字符串中的日期。
import pandas as pd
import re
df = pd.read_csv('sample.csv', sep='\n')
print(df)
def fix_alignment(m):
g1 = m.group(1).rjust(2, ' ')
g2 = m.group(2)
return f'{g1}/{g2}'
df['NewAlignment'] = df['ASSESSMENT'].apply(
lambda row: re.sub(r'\b(\d{1})/(\d{2})', fix_alignment, row)
)
print(df)
来自 df
的输出 ASSESSMENT NewAlignment
0 ASSESSMENT 21/28, MISSED ASSESSMENT 21/28, MISSED
1 ASSESSMENT 1/28, MISSED ASSESSMENT 1/28, MISSED
2 ASSESSMENT 2/28, MISSED ASSESSMENT 2/28, MISSED
3 ASSESSMENT 23/28, MISSED ASSESSMENT 23/28, MISSED
4 ASSESSMENT 23/28, MISSED ASSESSMENT 23/28, MISSED
5 ASSESSMENT 5/28, MISSED ASSESSMENT 5/28, MISSED