python - Pandas DataFrame 到控制台格式的 CSV

标签 python csv pandas dataframe

我正在尝试找到将格式化数据写入 .csv 甚至 .txt 文件的最佳方法。我正在使用 Pandas 来做到这一点。但是,输出不是我想要的方式。例如,我希望数据与标题对齐,因为我将输出 30 多个不同的列。目前,按照代码的编写方式,它可以很好地输出数据,但数据值与 header 不对齐。任何有关此问题的帮助将不胜感激。

这是我编写的一些示例代码来测试这一点:

import pandas as pd
import numpy as np

data={'dpr_NS_corZFac': [np.nan, np.nan, 35.736231803894043, 36.331412792205811, 
               35.694644451141357, 36.576189994812012, 37.236752510070801, 
               38.173699378967285, 38.808069229125977, 36.761274337768555, 
               30.194313526153564],
    'dpr_HS_corZFac': [np.nan, 38.550984859466553, 37.893826961517334, 40.246520042419434, 
             39.204437732696533, 37.227160930633545, 37.364296913146973, 
             40.320019721984863, 39.04454231262207, 33.014707565307617, 
             27.193448543548584] }

# Create a Pandas dataframe from some data.
df = pd.DataFrame(data, columns=['dpr_NS_corZFac','dpr_HS_corZFac'])

df.to_csv('/home/cpabla/data/pandastext.txt', header=True,
          index=None, sep="\t", mode='w',na_rep='99.99', float_format='%.2f')

输出到Python:

print df
    dpr_NS_corZFac  dpr_HS_corZFac
0              NaN             NaN
1              NaN       38.550985
2        35.736232       37.893827
3        36.331413       40.246520
4        35.694644       39.204438
5        36.576190       37.227161
6        37.236753       37.364297
7        38.173699       40.320020
8        38.808069       39.044542
9        36.761274       33.014708
10       30.194314       27.193449

输出到文本文件:

dpr_NS_corZFac  dpr_HS_corZFac
99.99   99.99
99.99   38.55
35.74   37.89
36.33   40.25
35.69   39.20
36.58   37.23
37.24   37.36
38.17   40.32
38.81   39.04
36.76   33.01
30.19   27.19

本质上,我希望输出与 python 的输出完全相同。

最佳答案

如果您想要在控制台上获得 DataFrame 的格式化输出,您可以使用 df.__repr__() 写入 txt。

with open('/home/cpabla/data/pandastext.txt', 'w') as fi:
    fi.write(df.__repr__())

给出一个像

这样的文本文件
    dpr_NS_corZFac  dpr_HS_corZFac
0              NaN             NaN
1              NaN       38.550985
2        35.736232       37.893827
3        36.331413       40.246520
4        35.694644       39.204438
5        36.576190       37.227161
6        37.236753       37.364297
7        38.173699       40.320020
8        38.808069       39.044542
9        36.761274       33.014708
10       30.194314       27.193449

但是,这将涉及事先对您的 DataFrame 进行一些强制,以满足您的文本文件规范,如果您的 DataFrame 足够大,还可能涉及您的表示设置。

关于python - Pandas DataFrame 到控制台格式的 CSV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42234487/

相关文章:

python - 如何将 scons 指向安装在我的主目录中的不同编译器?

python - Python中nan和 'nan'的区别

python - pandas.read_csv : how do I parse two columns as datetimes in a hierarchically-indexed CSV?

python - 如何使用 Python 写入 Excel 电子表格?

python - 将硬编码初始化值转换为 CSV

python - 改变 pandas 数据框的结构

python Pandas : how to return an empty dataframe in a loop?

python - 使用 matplotlib 子图和 seaborn 的 y 轴范围错误

python - 返回列表的最高值

javascript - d3.js 访问 x y 坐标