Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 用字符串行替换数据帧头_Python_Pandas_Dataframe - Fatal编程技术网

Python 用字符串行替换数据帧头

Python 用字符串行替换数据帧头,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个熊猫数据框,看起来像这样: X Y Z Value 0 6.196133e+06 2.321880e+06 1356.439 0.01 1 6.196155e+06 2.321867e+06 1347.363 0.01 2 6.196176e+06 2.321854e+06 1338.229 0.01 3

我有一个熊猫数据框,看起来像这样:

                   X             Y          Z     Value
0       6.196133e+06  2.321880e+06   1356.439      0.01
1       6.196155e+06  2.321867e+06   1347.363      0.01
2       6.196176e+06  2.321854e+06   1338.229      0.01
3       6.196197e+06  2.321841e+06   1332.272      0.01
4       6.196218e+06  2.321828e+06   1326.691      0.01
如何在没有行索引的情况下将数据写入.csv(或.txt)文件,以使列以制表符(或空格)分隔,标题显示如下:

title = "dataset test"
variables = "X", "Y", "Z", "Value"
zone t = "Data Field",i = 134, j = 293, k = 5, f=point
6.196133e+06  2.321880e+06   1356.439      0.01
6.196155e+06  2.321867e+06   1347.363      0.01
6.196176e+06  2.321854e+06   1338.229      0.01
6.196197e+06  2.321841e+06   1332.272      0.01
6.196218e+06  2.321828e+06   1326.691      0.01
仅供参考:标题为Tecplot软件标题

(我没有亲自测试过,所以可能需要一些调整;-) 根据熊猫文档,类似这样的东西应该会起作用:

(我没有亲自测试过,所以可能需要一些调整;-)) 根据熊猫文档,类似这样的东西应该会起作用:

准备您的输入:

import pandas as pd
import os

os.chdir('Directory to save to')

df = pd.DataFrame([[6.196133e+06,2.321880e+06,1356.439,0.01],
                    [6.196155e+06,2.321867e+06,1347.363,0.01],
                    [6.196176e+06,2.321854e+06,1338.229,0.01],
                    [6.196197e+06,2.321841e+06,1332.272,0.01],
                    [6.196218e+06,2.321828e+06,1326.691,0.01]],columns = ['X','Y','Z','Value'])

info = pd.DataFrame([['title = "dataset test"'],
                    ['variables = ' + str(df.columns.tolist())],
                    ['zone t = "Data Field", i = 134, j = 293, k = 5, f=point']])
要保存到Excel文件,请执行以下操作:

writer = pd.ExcelWriter('out.xlsx', engine='openpyxl')

info.to_excel(writer, sheet_name='Output', header=None, index=False, startcol=0,startrow=0)
df.to_excel(writer, sheet_name='Output', header=None, index=False, startcol=0,startrow=3)

writer.save()
要保存到CSV文件,请执行以下操作:

with open('out.csv', 'w') as myfile:
    info.to_csv(myfile, header=None, index=False, sep=' ')
    df.to_csv(myfile, header=None, index=False, sep=' ')
准备您的输入:

import pandas as pd
import os

os.chdir('Directory to save to')

df = pd.DataFrame([[6.196133e+06,2.321880e+06,1356.439,0.01],
                    [6.196155e+06,2.321867e+06,1347.363,0.01],
                    [6.196176e+06,2.321854e+06,1338.229,0.01],
                    [6.196197e+06,2.321841e+06,1332.272,0.01],
                    [6.196218e+06,2.321828e+06,1326.691,0.01]],columns = ['X','Y','Z','Value'])

info = pd.DataFrame([['title = "dataset test"'],
                    ['variables = ' + str(df.columns.tolist())],
                    ['zone t = "Data Field", i = 134, j = 293, k = 5, f=point']])
要保存到Excel文件,请执行以下操作:

writer = pd.ExcelWriter('out.xlsx', engine='openpyxl')

info.to_excel(writer, sheet_name='Output', header=None, index=False, startcol=0,startrow=0)
df.to_excel(writer, sheet_name='Output', header=None, index=False, startcol=0,startrow=3)

writer.save()
要保存到CSV文件,请执行以下操作:

with open('out.csv', 'w') as myfile:
    info.to_csv(myfile, header=None, index=False, sep=' ')
    df.to_csv(myfile, header=None, index=False, sep=' ')


写入行?i、j和k值来自何处?标头由用户定义。i、 j、k和字符串(如“Data Field”或“dataset test”)都是用户定义的。我可以根据其他数据预先粘贴标题行参数(i、j、k和“”中的字符串)。事实上,我只想将这三行粘贴到输出文件的顶部,然后是从dataframe.write-In行中分离出来的制表符(或空格)。I、j和k值来自何处?标头由用户定义。i、 j、k和字符串(如“Data Field”或“dataset test”)都是用户定义的。我可以根据其他数据预先粘贴标题行参数(i、j、k和“”中的字符串)。事实上,我只想将这三行粘贴到输出文件的顶部,然后从dataframe中粘贴制表符(或空格)分隔的数据。解决方案会出现以下错误:
“file”对象没有属性“writeline”
。它不会写入头,也会弄乱文件格式。感谢您的尝试。解决方案会出现以下错误:
“file”对象没有属性“writeline”
。它不会写入头,也会弄乱文件格式。感谢您的尝试。除了输出是excel外,这在大多数情况下都有效。有脚本可以读取excel并将其写入csv/txt,但我的文件又大又多。此外,我担心来回会弄乱文件格式和编码,这也是我想要避免的。不过谢谢你的解决方案。我已经添加了一个保存到CSV的选项,很抱歉在你的原始问题中遗漏了这个选项。谢谢,这是我想要的方式。但是它用额外的“和[]:
“title=”“dataset test”“”“变量=['X',Y',Z',Value']“zone t=”“Data Field”“,i=134,j=293,k=5,f=point“
没有问题@Bob!在指定信息数据帧时可以删除这些变量,只需使用str()将它们作为字符串传入即可这在大多数情况下都有效,但输出是excel。有脚本可以读取excel并将其写入csv/txt,但我的文件又大又多。此外,我担心来回会弄乱文件格式和编码,这也是我想要避免的。不过,感谢您提供的解决方案。我添加了一个保存到csv的选项,很抱歉错过了这个选项在你原来的问题中。谢谢,这是我想要的方式。但是它用额外的“和[]”来写标题:
“title=”“dataset test”“”“变量=['X'、'Y'、'Z'、'Value']“zone t=”“Data Field”“、I=134、j=293、k=5、f=point”
没有问题@Bob!您可以在指定info DataFrame时删除它们,只需使用str()将它们作为字符串传入即可