Расширьте записи пандасфрейма до той же длины - PullRequest
4 голосов
/ 07 мая 2019

Если у меня есть фрейм данных, который выглядит примерно так:

from pandas import DataFrame as df

data_df = df(data={"Number": [234, 7892, 109736, 8384664088]})

print(data_df)

       Number
0         234
1        7892
2      109736
3  8384664088

Как я могу быстро расширить записи в фрейме данных до длины записи с максимальной длиной, используя определенный символ?Например, если я использую «#», чтобы расширить их до чего-то вроде:

       Number
0  234#######
1  7892######
2  109736####
3  8384664088

Ответы [ 4 ]

4 голосов
/ 07 мая 2019

Найдите максимальную ширину с помощью str.len, а затем используйте str.pad для заполнения каждой записи:

max_width = data_df['Number'].astype(str).str.len().max()
data_df['Number'].astype(str).str.pad(side='right', fillchar='#', width=max_width)
4 голосов
/ 07 мая 2019

Один из способов будет использовать str.ljust, чтобы заполнить правую часть чисел, приведенных к строке, на столько #, сколько необходимо для достижения максимальной длины:

max_len = len(str(max(data_df.Number)))
data_df['Number'] = data_df.Number.astype(str).str.ljust(max_len, '#')

    Number
0  234#######
1  7892######
2  109736####
3  8384664088
0 голосов
/ 07 мая 2019

Вы можете использовать

lng = len(str(max(data_df.Number)))
data_df['Number'] = data_df['Number'].map(lambda x: f'{x:#<lng}')

       Number
0  234#######
1  7892######
2  109736####
3  8384664088
0 голосов
/ 07 мая 2019

Найдите длину максимального числа из столбца и добавьте #

from pandas import DataFrame as df

data_df = df(data={"Number": [234, 7892, 109736, 8384664088]})

n = len(str(data_df['Number'].max()))

data_df['Number'] = [str(i)+'#'*(n-len(str(i))) for i in data_df['Number']]
print(data_df)

Вывод:

      Number                                                                                                                         
0  234#######                                                                                                                         
1  7892######                                                                                                                         
2  109736####                                                                                                                         
3  8384664088  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...