将熊猫数据框条目扩展到相同长度

时间:2019-05-07 08:37:12

标签: python pandas dataframe

如果我的数据框看起来像这样:

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 个答案:

答案 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