如果我的数据框看起来像这样:
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
答案 0 :(得分:4)
一种方法是使用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
答案 1 :(得分:4)
使用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)
答案 2 :(得分:0)
从该列中找到最大数字的长度,并附加#
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
答案 3 :(得分:0)
您可以使用
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