Python 限制数据帧字符长度

Python 限制数据帧字符长度,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个旧的Fortran程序,可以读取.dat文件。我正在使用python处理一些文本文件,以便它们符合Fortran程序的严格输入风格 我首先导入文本文件并将其转换为数据帧。现在我需要限制每列可以容纳的字符数。例如,第一列中有9个字符,第二列中有5个字符,依此类推。 此外,在dataframe的一行的字符数少于列限制的情况下,我需要填写它以使其满足限制。例如,列的限制为5个字符,但第n行的值为15,新值需要为xxx15 我想做的事可能吗?有人能帮忙吗? 谢谢:D当然可以,所以首先编写一个函数

我有一个旧的Fortran程序,可以读取.dat文件。我正在使用python处理一些文本文件,以便它们符合Fortran程序的严格输入风格

我首先导入文本文件并将其转换为数据帧。现在我需要限制每列可以容纳的字符数。例如,第一列中有9个字符,第二列中有5个字符,依此类推。 此外,在dataframe的一行的字符数少于列限制的情况下,我需要填写它以使其满足限制。例如,列的限制为5个字符,但第n行的值为15,新值需要为xxx15

我想做的事可能吗?有人能帮忙吗?
谢谢:D

当然可以,所以首先编写一个函数,该函数将接受一个字符串,并根据您的列长度要求对其进行编辑

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 

这假设您的列都是字符串。如果不只是使用
.astype(str)

强制它们,那么请首先编写一个函数,该函数将接受一个字符串并对其进行编辑,以满足您的列长度要求

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 

这假设您的列都是字符串。如果不只是使用
.astype(str)

强制它们,那么熊猫选项似乎在所有df和列中都是全局的。对于填充,您还可以使用一个函数,例如
def add_characters(x,size):pad=size-len(x),如果pad>0:返回“x”*pad+str(x)else:return x
似乎pandas选项在所有df和列中都是全局的。对于填充,您还可以使用函数,例如
def add_characters(x,size):pad=size-len(x),如果pad>0:return“x”*pad+str(x)else:return x
Wow!太棒了!非常感谢你的帮助。你帮我省了几个小时:哇!太棒了!非常感谢你的帮助。你帮我节省了几个小时:D