“系列”对象是可变的,因此无法对它们进行散列错误,调用to_csv

Rob*_*ert 5 python csv immutability pandas

我有一个大的数据框(5天,每秒一个值,几列),我想使用python pandas df.to_csv模块将2列保存在csv文件中。

我尝试了不同的方法,但始终收到错误消息:

“系列”对象是可变的,因此不能被散列

我找到了与groupby有关但与文件保存无关的解决方案。有人对我有主意吗?

这是我的数据框的一部分:

DateTime
2015-07-14 00:00:00    414.37
2015-07-14 00:00:00    414.37
2015-07-14 00:00:01    414.29
2015-07-14 00:00:02    414.14
2015-07-14 00:00:03    414.21
2015-07-14 00:00:04    414.05
2015-07-14 00:00:05    414.05
2015-07-14 00:00:06     414.2
2015-07-14 00:00:07    414.54
2015-07-14 00:00:08    414.39
Name: CO2abs, dtype: object DateTime
Run Code Online (Sandbox Code Playgroud)

编辑:对不起-忘记了代码...

df.to_csv('alldatcorr.csv',sep='\t',cols=(df.CO2abs,df.CO2corr))
Run Code Online (Sandbox Code Playgroud)

EdC*_*ica 5

你的错误是因为你传递了一个 Series 元组而不是一个列名/字符串元组:

df.to_csv('alldatcorr.csv',sep='\t',cols=(df.CO2abs,df.CO2corr))
Run Code Online (Sandbox Code Playgroud)

所以你发现这有效:

df.to_csv('corr2.csv',sep='\t',cols=('CO2abs','CO2corr'))
Run Code Online (Sandbox Code Playgroud)

您可以通过传递列表并使用子脚本运算符从 df 中进行子选择来避免歧义:

df[['CO2abs','CO2corr']].to_csv('corr2.csv',sep='\t')
Run Code Online (Sandbox Code Playgroud)

此外,传递字符串列表而不是元组可能更具可读性