【问题标题】:'Series' objects are mutable, thus they cannot be hashed error calling to_csv“系列”对象是可变的,因此它们不能被散列错误调用 to_csv
【发布时间】:2019-05-31 03:42:05
【问题描述】:

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

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

'Series' 对象是可变的,因此它们不能被散列

我找到了与 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

编辑: 抱歉 - 忘记密码...

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

【问题讨论】:

    标签: python csv pandas immutability


    【解决方案1】:

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

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

    所以你发现这行得通:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-26
      • 2021-01-17
      • 1970-01-01
      • 1970-01-01
      • 2021-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多