繁体   English   中英

Pandas TypeError: unhashable type: 'list' 当从 csv 导入时

[英]Pandas TypeError: unhashable type: 'list' when importing from csv

我正在尝试从 csv 文件中清除一些数据。 这是我正在导入的数据的示例。 我想要做的是用第一个逗号分隔单元格。 逗号之前的数据进入一列,逗号之后的数据进入另一列。

示例数据

我已经设置了一个函数来处理数据:

def soil_description(text_block):
    print(text_block, type(text_block))
    text_list = text_block.split(',')
    print(1)
    major = text_list[0]
    print(2)
    if len(major) == len(text_block):
        print(3)
        major = ''
        minor = text_block
    else:
        print(4)
        minor = text_block[(len(major)+2):]
    print(major, type(major))
    print(minor, type(minor))
    return major, minor

csv 文件被加载到数据框 fgd_og_df 中,我试图使用以下命令将其放入 soil_gINT_df 数据框的两列中:

soil_gINT_df[['USCS Major Constituent 1'],['Additional Description']] = fgd_og_df.apply(lambda row:pd.Series(soil_description(row['Description'])),axis=1)

这给了我以下错误:

Traceback (most recent call last):
  File "C:/Users/main.py", line 128, in <module>
    soil_gINT_df[['USCS Major Constituent 1'],['Additional Description']] = fgd_og_df.apply(lambda row:pd.Series(soil_description(row['Description'])),axis=1)
  File "C:\Users\venv\lib\site-packages\pandas\core\frame.py", line 3645, in __setitem__
    self._set_item_frame_value(key, value)
  File "C:\Users\venv\lib\site-packages\pandas\core\frame.py", line 3770, in _set_item_frame_value
    if key in self.columns:
  File "C:\Users\venv\lib\site-packages\pandas\core\indexes\base.py", line 5008, in __contains__
    hash(key)
TypeError: unhashable type: 'list'

这是错误之前的输出:

页岩。 <类'str'>

1

2

3

<类'str'>

页岩。 <类'str'>

因此,当它试图将两个字符串带回 soil_gINT_df 数据帧时,它会通过函数并给出错误,但我不确定为什么。 还有其他类似的文本字符串可以工作,所以我有点茫然。

错误就在这里,请参阅 chepner 的评论指出第一个是列表的元组:

soil_gINT_df[['USCS Major Constituent 1'],['Additional Description']]

应该:

soil_gINT_df[['USCS Major Constituent 1', 'Additional Description']]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM