pandas Python 3.5.1:增量开发使用相同的数据集,更改了列名但在 运行 脚本上,旧名称保留在数据框中

pandas Python 3.5.1: incremental developement using the same dataset, changed a column name but on running script, old name remains in the dataframe

我正在解析一个 Tsv(制表符分隔值)文件以使用 pandas.read_csv() 创建一个 pandas 数据框。我正在对 Python 脚本进行增量更改并每次执行脚本以反映更改。

例如,我是这样解析的:

data_column_names = ['Query','StartOffSet','EndOffset']
dataframe = pandas.read_csv("resultData.tsv", sep='\t', usecols=data_column_names

现在我通过更改 data_column_names 的声明将 data_column_names 列表的第 3 项更改为 'EndOffSet':

data_column_names = ['Query','StartOffSet','EndOffSet']

然后我遍历数据框中的所有行:

for index, row in dataframe.iterrows():
    print(row.EndOffSet)

当我 运行 这个脚本时,我得到 AttributeError: 'Series' object has no attribute 'EndOffSet'。打印每一行的值后,我发现在执行 运行 脚本时,数据框的第三列仍然是 'EndOffset' 而不是 'EndOffSet',这是我对脚本

dataframe.columns.tolist() 显示 ['Query', 'StartOffSet', 'EndOffset'],这是不应该的。这是旧的列名。为什么我对列名所做的更改没有反映在确定的执行时间。未对数据文件进行任何更改。

如何解决和避免这种情况?

N.B。我假设在幕后,正在使用一些预编译文件,并且由于数据没有改变,预编译文件也没有改变。存储代码和数据的工作目录中没有 *.pyc 个文件。我注销了用户会话,然后再次登录,但这并没有解决问题。

嗯,终于找到原因了。 TSV 文件,即我的数据文件在第 0 行有 Header,在 TSV 文件中,列名给出为 'Query' 'StartOffSet' 'EndOffset',所以我必须使用这些名字只在我的代码中。

更改 pandas.read_csv()usecols 参数中的列名不会导致任何错误,但会在执行期间导致不同类型的错误行为。