我有一个由如下条目组成的文件:

A       first = 4 | 1_3_5_4        Name1                                  
labelToSkip
i = 1000000 j = -3 k = -15
end

B       first = 4 | 9_2_2_4        Name2                                  
labelToSkip
i = 150000 j = -3 k = -20
end
...

我已经成功地构建了一个Pandas DataFrame(DF),其中包含我从另一个文件读入和修改的数据.数据帧如下所示:

    i      j      k     
0   unit1  unit2  unit3
1   1000   100    84      
2  -3000   200    60       
3  -2000   90     195      
4   900    40     209 

现在,我想从数据帧中 Select 一行(如第3行),并将i、j、k值放入第一个文件中.

例如,我希望将数据帧第3行中的i、j、k值放入:

3  -2000   90     195 

代替我 Select 的条目(如"B")中的i,j,k值,以获得:

B       first = 4 | 9_2_2_4        Name2                                  
labelToSkip
i = -2000 j = 90 k = 195
end

实际上,条目相当复杂,我需要替换的值并不总是位于条目的第三行.我需要帮助的主要问题是如何在文件中找到(1)"B"或"Name2",然后在"B"或"Name2"下替换特定标识符后的值.

我为没有提供try 而道歉.我知道如何将数据帧写入.txt文件(例如,来自这篇文章:write a Pandas dataframe to a .txt file).我还了解了如何替换数据帧中的特定值.但是,我找不到任何有关如何将数据帧中的特定值放在外部文件中的标识符之后的信息.如果有人能提供一点提示,我将不胜感激.

推荐答案

可能的解决方案之一是使用re模块:

import re

idx = 3
to_replace = "B"

with open("input_file.txt", "r") as f_in:
    file_string = f_in.read()

    i, j, k = df.loc[idx, ["i", "j", "k"]]

    file_string = re.sub(
        rf"^({to_replace}\s.*?)i = \S+ j = \S+ k = \S+",
        f"\g<1>i = {i} j = {j} k = {k}",
        file_string,
        flags=re.M | re.S,
    )

with open("output_file.txt", "w") as f_out:
    f_out.write(file_string)

output_file.txt将包含:

A       first = 4 | 1_3_5_4        Name1
labelToSkip
i = 1000000 j = -3 k = -15
end

B       first = 4 | 9_2_2_4        Name2
labelToSkip
i = -2000 j = 90 k = 195
end

input_file.txt包含:

A       first = 4 | 1_3_5_4        Name1
labelToSkip
i = 1000000 j = -3 k = -15
end

B       first = 4 | 9_2_2_4        Name2
labelToSkip
i = 150000 j = -3 k = -20
end

Python相关问答推荐

aiohTTP与pytest的奇怪行为

如果在第一行之前不存在其他条件,如何获得满足口罩条件的第一行?

有什么方法可以修复奇怪的y轴Python matplotlib图吗?

情节生成的饼图文本超出页面边界

自定义新元未更新参数

如何修复使用turtle和tkinter制作的绘画应用程序的撤销功能

使用Ubuntu、Python和Weasyprint的Docker文件-venv的问题

使用plotnine和Python构建地块

如何使用Python将工作表从一个Excel工作簿复制粘贴到另一个工作簿?

Pandas 滚动最接近的价值

运行终端命令时出现问题:pip start anonymous"

Telethon加入私有频道

删除字符串中第一次出现单词后的所有内容

如何在Python数据框架中加速序列的符号化

当独立的网络调用不应该互相阻塞时,'

从一个系列创建一个Dataframe,特别是如何重命名其中的列(例如:使用NAs/NaN)

在vscode上使用Python虚拟环境时((env))

Asyncio:如何从子进程中读取stdout?

在Python中,从给定范围内的数组中提取索引组列表的更有效方法

使用特定值作为引用替换数据框行上的值