Panda - 在特定字符索引处插入列

问题描述 投票:0回答:1

我有一个像下面这样的 df:

Account_num First_Name  Last_Name   Zipcode  Amount
AAA111      AAA         BBB         12345    784.23
AAA112      AAB         BBA         44546    2145.32
AAA113      AAC         BBC         75452    6563.24
AAA114      AAD         BBD         45484    9532.21

我需要格式化此数据框,以便各列位于从行开头算起的某个位置。例如:

我需要 account_num 从字符 5 开始,而不是从该行的字符 1 开始。由于 account_nums 始终为 6 个字符长,因此我需要将名字从该行的第 13 个字符开始。(包括空格)依此类推。

我有 sas 中的示例,想用 Panda 重写它。如何才能做到这一点? 输入 @5(acct_num) @13(first_name)($char32.-l)@20(last_Name) ($char32.-l)

1234567891112131415161718192021222324252627282930 AAA111 AAA BBB 12345 784.23 AAA112 AAB BBA 44546 2145.32 AAA113 AAC 英国广播公司 75452 6563.24 AAA114 AAD BBD 45484 9532.21

在上面,第一行表示字符数,我的输出需要是 account_num 列从字符 5 开始,First_Name 从 13 开始,last_Name 从 20 开始,依此类推。

python pandas dataframe numpy sas
1个回答
0
投票

您可以使用 ljust 并应用数据框,如果需要,您可以更改我的 just_list 值 试试这些代码↓

just_list = [ 8, 20, 23, 11, 12 ]

def char_just(x):
    t = " "*4
    
    for e,j in enumerate(just_list):
        t += x.iloc[e].ljust(j)
    
    return t

df = df.astype(str)
df.apply(char_just, axis=1).to_csv('text.txt', index=False, header=False)
© www.soinside.com 2019 - 2024. All rights reserved.