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
参数中的列名不会导致任何错误,但会在执行期间导致不同类型的错误行为。
我正在解析一个 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
参数中的列名不会导致任何错误,但会在执行期间导致不同类型的错误行为。