[英]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.