python - 使用 Pandas 数据框写入复杂格式布局

标签 python pandas

我正在尝试创建一个具有非常特定格式的文件,这意味着我很难单独使用 pandas 进行操作和保存。

考虑一下:

FILE = open('writeFileTest' + ".trc", "w")

# Print header information
FILE.write('A\tB\tC\n')
FILE.write('\t\tD\tE\tF\tG\n')

这将产生一些标题,大致如下:

A  B  C
      D  E  F  G

现在假设我还有一个 pandas 数据框,如下所示:

>>>import pandas as pd
>>>import numpy as np
>>>pd.DataFrame(np.random.randn(5, 6))
          0         1         2         3         4         5
0  0.215413  0.075976  0.516593  1.699469  1.382774 -0.604032
1  0.156343  0.918240  0.728018 -0.975881 -1.034713 -1.920139
2  1.486848 -0.762764 -0.232464  1.824197 -0.321638  0.187009
3 -1.125282 -0.419082  1.025092  1.381589  0.369712  0.043958
4 -0.118296  0.699864  0.796202 -0.560172 -1.046126  0.398537

我如何结合两者来产生这个:

A         B         C
                    D         E         F         G
0.215413  0.075976  0.516593  1.699469  1.382774 -0.604032
0.156343  0.918240  0.728018 -0.975881 -1.034713 -1.920139
1.486848 -0.762764 -0.232464  1.824197 -0.321638  0.187009
-1.125282 -0.419082  1.025092  1.381589  0.369712  0.043958
0.118296  0.699864  0.796202 -0.560172 -1.046126  0.398537

我的实际文件显然比这复杂得多,这就是为什么我不能使用 pandas,而且我的数据要大得多。那么,如何将这两种方法结合起来呢?我还应该提到,每个都由 \t 制表符分隔。

编辑:

也有可能在纯 Pandas 中完成所有这些(我认为,但我显然不知道如何做,因此这个问题)。

然后我们会处理整个事情:

A         B         C
                    D         E         F         G
0.215413  0.075976  0.516593  1.699469  1.382774 -0.604032
0.156343  0.918240  0.728018 -0.975881 -1.034713 -1.920139
1.486848 -0.762764 -0.232464  1.824197 -0.321638  0.187009
-1.125282 -0.419082  1.025092  1.381589  0.369712  0.043958
0.118296  0.699864  0.796202 -0.560172 -1.046126  0.398537

作为 pandas 数据框 foo,我们将在其上执行 foo.to_csv(foo.csv,sep='\t'),然后更改文件扩展名。但这样一来,我们就必须处理空的数据框单元格,并确保 pandas 在保存时将它们视为空。

最佳答案

您可以打开文件,手动写入 header ,然后转储数据帧。试试这个:

import pandas as pd
import numpy as np

data = np.random.randint(0,10, (4,6))

df = pd.DataFrame(data, columns=list('abcdef'))

header1 = 'A\tB\tC\t\t\t\n'
header2 = '\t\tD\tE\tF\tG\n'
with open('./out.tsv','w') as fp:
    fp.write(header1)
    fp.write(header2)
    df.to_csv(fp, sep='\t', header=False, index=False)

关于python - 使用 Pandas 数据框写入复杂格式布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39260884/

相关文章:

python - 根据列值拆分数据框并导出到不同的 Excel 工作表

python - Pandas :取消融化数据框以添加任意数量的列?

python - 如何在python中定义自由变量?

pandas - 如何确保在 python pandas pd.cut 中获得零计数的标签

python - 当我的播放器类与我的平台类之一发生碰撞时,如何制作和结束屏幕?

python - 日志记录 - 如何忽略导入的模块日志?

python - pandas groupby 组索引列表

python-3.x - Pandas - AttributeError : 'DataFrame' object has no attribute 'map'

python - 有没有办法将条件应用于 pandas 中的正则表达式?

python - 使用计数和 tfidf 作为 scikit 学习的特征