我想要基于 SConstruct 文件中分配的变量构建文件。如本例所示:
import os
env = Environment(ENV = os.environ)
def text_file_maker(target, source, env):
with open(str(target[0]), "w") as text_file:
text_file.write(env['my_text'])
return 0
env.Append( BUILDERS = {'Make_text' : Builder(action = text_file_maker)})
env.Make_text(target = 'sour.txt',
source = None,
my_text = 'lemon')
env.Make_text(target = 'sweet.txt',
source = None,
my_text = 'apple')
Run Code Online (Sandbox Code Playgroud)
运行此脚本会生成两个文本文件,内容分别为“lemon”和“apple”。如果我再次运行该脚本,SCons 会正确检测到目标存在:
scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
scons: `.' is up to date.
scons: done building targets.
Run Code Online (Sandbox Code Playgroud)
现在,如果我要改变一个目标,例如:
env.Make_text(target = 'sweet.txt',
source = …
Run Code Online (Sandbox Code Playgroud) 我正在将文本文件导入 Pandas 数据框。列数可能会有所不同,名称也会有所不同。
但是,标题行始终以开头,~A
并且 read_csv 将其解释为第一列的名称,随后所有列名称都向右移动。
早些时候我使用np.genfromtxt()
了这个论点,deletechars = 'A__'
但我没有找到任何与 Pandas 等效的函数。有没有办法在阅读时排除名称,或者作为第二个选择,删除第一个名称但保持列不变?
我正在阅读这样的文件:
in_file = pd.read_csv(file_name, header=header_row,delim_whitespace=True)
Run Code Online (Sandbox Code Playgroud)
现在我得到了这个(就像文本文件一样):
~A DEPTH TIME TX1 TX2 TX3 OUT6
11705 2.94 10525.38 126.14 169.71 353.86 4.59 NaN
11706 2.93 10525.38 NaN 168.29 368.00 4.75 NaN
11707 2.92 10525.38 126.14 166.71 369.86 4.93 NaN
Run Code Online (Sandbox Code Playgroud)
但我想'得到这个:
DEPTH TIME TX1 TX2 TX3 OUT6
11705 2.94 10525.38 126.14 169.71 353.86 4.59
11706 2.93 10525.38 NaN 168.29 368.00 4.75
11707 2.92 10525.38 126.14 166.71 …
Run Code Online (Sandbox Code Playgroud)