open()和numpy.savetext()函数的意外行为

时间:2018-03-22 01:41:34

标签: python pandas numpy

问题

我正在尝试输出有关表的统计信息,然后使用Pandas和numpy输出更多表数据。

当我执行以下代码时:

import pandas as pd
import numpy as np

data = pd.read_csv(r'c:\Documents\DS\CAStateBuildingMetrics.csv')

waterUsage = data["Water Use (All Water Sources) (kgal)"]
dept = data[["Department Name", "Property Id"]]
mean = str(waterUsage.mean())
median = str(waterUsage.median())
most = str(waterUsage.mode())

hw1 = open(r'c:\Documents\DS\testFile', "a")
hw1.write("Mean Water Usage     Median Water Usage      Most Common Usage Amounts\n")
hw1.write(mean+'       '+median+'                   '+most)
np.savetxt(r'c:\Documents\DS\testFile', dept.values, fmt='%s')

在将平均值,中位数和模式用水量的统计数据写入文件之前,np.savetext输出的表格将写入c:\Documents\DS\testFile。以下是我所描述的输出:

以下是表输出的示例,最终为1700行。

  

Capitol Area Development Authority 1259182
  国会区发展局1259200
  国会区发展局1259218
  加州林业与消防部门3939905
  加州林业与消防部门3939906
  加州林业与消防部门3939907

此后,脚本将以此格式输出统计信息

  

平均用水量中位数水用量最常见用量量   6913.1633414932685 182.35 0 165.0
  键入:float64

问题

如何调整行为以确保统计信息显示在表格之前?

1 个答案:

答案 0 :(得分:1)

正如@hpaulj所指出的那样,问题是没有引用相同的打开文件。

更换

np.savetxt(r'c:\Documents\DS\testFile', dept.values, fmt='%s')

使用

np.savetxt(hw1, dept.values, fmt='%s')
hw1.close()

将以预期顺序在同一文件中写入所有信息。 Closing it遵循在Python中处理文件的最佳实践。