pandas 文本文件中的行和列坐标

yyhrrdl8  于 2023-09-29  发布在  其他
关注(0)|答案(2)|浏览(101)

我有一个包含大量数据的文本文件,我只想编辑一列。坐标从第4行第111列开始,到第55行第111列结束。这里有一个例子:

//  typTpt  TypTpt  NomTypTpt    LibTypTpt                                                         TypDem Medic Motif Mutat Classe Dispo AnnDep AnnRdv AnnExclu HorRdv Ste TSupp TypHos AC , Etb_Debiteur , Art80 , WithForfait , RetSelAutre
        01,      E, Entr‚e     ,"Entr‚e                   "                                       ,     E,    N,             , 0     ,             ,
        02,      E, Entr‚eUrg  ,"D‚part                              "                            ,     E,    N,    U,    S,    02,    O,IE    ,IEAH  , E      ,     D,  O,    0,     L, S ,              , 1     ,             ,
        40,      E, Entr‚eMEG  ,"D‚part                             "                             ,     I,    N,    u,    S,    02,    O,I     ,I     ,        ,     D,  N,    0,     L,

我想用B代替N来编辑Medic列:

//  typTpt  TypTpt  NomTypTpt    LibTypTpt                                                         TypDem Medic Motif Mutat Classe Dispo AnnDep AnnRdv AnnExclu HorRdv Ste TSupp TypHos AC , Etb_Debiteur , Art80 , WithForfait , RetSelAutre
        01,      E, Entr‚e     ,"Entr‚e                   "                                       ,     E,    B,    E,    S,    01,    O,IEA@  ,IEAH  , EA     ,     D,  N,    0,     L,   ,              , 0     ,             ,
        02,      E, Entr‚eUrg  ,"D‚part                              "                            ,     E,    B,    U,    S,    02,    O,IE    ,IEAH  , E      ,     D,  O,    0,     L, S ,              , 1     ,             ,
        40,      E, Entr‚eMEG  ,"D‚part                             "                             ,     I,    B,    u,    S,    02,    O,I     ,I     ,        ,     D,  N,    0,     L,

我已经考虑过使用pandas模块,但它不适用于我的文本,因为它不是一个表,我不能重新排列它。

import pandas as pd
df = pd.read_csv("d:/art80_typTpt_v2.txt", sep="\s+")
df.loc[df["Medic"] == "B" ,"Medic"] = "A"
print(df)

df.to_csv('d:/test.txt',sep='\t', index=False)

我们可以用python做一个函数来定位自己在特定的列和行吗?如果是这样,是否可以只修改大量数据中的一列,例如Medic列?

umuewwlo

umuewwlo1#

您可以简单地逐行执行,并在正确的位置替换所需的字符,因为Python中的字符串是数组。

new_lines = []
with open('input_file.txt', mode='r', encoding='utf-8') as fh:
    for line in fh:
        new_line = line
        if (len(line)>109 and line[110]=='N'):
            new_line = line[:109]+'B'+line[111:]
        new_lines.append(new_line)

with open('edited_file.txt', mode='wt') as myfile:
    myfile.write(''.join(new_lines))
nbnkbykc

nbnkbykc2#

您的CSV文件存在一些一致性问题。乍一看,它看起来像是一个逗号分隔的CSV文件,但不是每行都有相同数量的逗号。确保CSV文件中的每一行都有相同数量的逗号,然后您可以使用以下命令读取:

df = pd.read_csv("d:/art80_typTpt_v2.txt", sep=",")

逗号分隔符 sep="," 是标准的,但有时制表符 sep="\t” 或分号 sep=";” 使用。

相关问题