Robert
Robert

Reputation: 673

'Series' objects are mutable, thus they cannot be hashed error calling to_csv

I have a large Dataframe (5 days with one value per second, several columns) of which I'd like to save 2 columns in a csv file with python pandas df.to_csv module.

I tried different ways but always get the error message:

'Series' objects are mutable, thus they cannot be hashed

which I found a solution for in connection with groupby but not with filesaving. Somebody has an idea for me?

Here a part of my Dataframe:

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

Edit: sorry - forgot the code...

df.to_csv('alldatcorr.csv',sep='\t',cols=(df.CO2abs,df.CO2corr))

Upvotes: 6

Views: 31244

Answers (1)

EdChum
EdChum

Reputation: 394081

Your error comes about because you passed a tuple of Series rather than a tuple of column names/strings:

df.to_csv('alldatcorr.csv',sep='\t',cols=(df.CO2abs,df.CO2corr))

So you found that this worked:

df.to_csv('corr2.csv',sep='\t',cols=('CO2abs','CO2corr'))

you could've avoided the ambiguity by just sub-selecting from your df by passing a list and using the sub-script operator:

df[['CO2abs','CO2corr']].to_csv('corr2.csv',sep='\t')

Also it's probably more readable to pass a list of strings rather than a tuple

Upvotes: 5

Related Questions