将单个数字替换为 '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