Ограничить длину символа в кадре - PullRequest
0 голосов
/ 30 сентября 2019

У меня есть старая программа на Фортране, которая читает файлы .dat. Я использую python для обработки некоторых текстовых файлов, чтобы они соответствовали строгому стилю ввода программы Fortran.

Сначала я импортирую текстовый файл и превращаю его в кадр данных. Теперь мне нужно ограничить количество символов, которое может содержать каждый столбец. Например, девять символов в первом столбце, 5 во втором и т. Д. И т. Д. Кроме того, в том случае, если одна строка данных имеет меньше символов, чем предел столбца, мне нужно заполнить его так, чтобы он соответствовал пределу. Например, столбец имеет ограничение в 5 символов, но строка n содержит значение 15, новое значение должно быть xxx15

Возможно ли то, что я хочу сделать? Кто-нибудь может помочь? Спасибо: D

1 Ответ

1 голос
/ 30 сентября 2019

Конечно, поэтому сначала напишите функцию, которая возьмет строку и отредактирует ее в соответствии с вашими требованиями к длине столбца

def char_len(x, fixed_n):
    '''set string x to fixed_n character, prepend with 'xxx' if short'''
    if len(x) > fixed_n: 
        return x[:fixed_n] 
    elif len(x) < fixed_n: 
        return 'x' * (fixed_n - len(x)) + x 
    return x 

, затем вы примените функцию к каждому столбцу информационного кадра, передавая требуемыйдлина символа в качестве второго аргумента нашей функции char_len

test_df = pd.DataFrame({'a':['a', 'abcdef'], 
    'b':['abcdefg', 'hi']})
test_df['a'] = test_df['a'].apply(lambda x: char_len(x, 5))  
test_df['b'] = test_df['b'].apply(lambda x: char_len(x, 4)) 
test_df

Это предполагает, что все ваши столбцы являются строками. Если не просто принудить их, используя .astype(str)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...