如何在pandas数据帧中反转.astype(str)?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在pandas数据帧中反转.astype(str)?相关的知识,希望对你有一定的参考价值。

我不得不删除数据框中包含列表值的重复行。

所以我用过

pd_data['douban_info_string'] = pd_data['douban_info'].astype(str)

其中'douban_info_string'有列表值。

但现在我需要这个列表与另一个数据框的列表进行比较。但是列表现在变成了字符串,我收到了这个错误

TypeError: unhashable type: 'list'
答案

使用pandas.eval

df = pd.DataFrame({'info':[[1,2,3], [4,5,6]]})

df['info_str']=df['info'].astype(str)
df['info_str'][0]
# '[1, 2, 3]'

df['info_str'].apply(pd.eval)[0]
# [1,2,3]
另一答案

使用带有if语句的apply

df = pd.DataFrame({'info':[[1,2,3], [4,5,6], 'str224']})
df['info_str'] = df['info'].astype(str)
print(df['info_str'][0])
print(type(df['info_str'][0]))
print(df['info_str'].apply(lambda x: x if x in df['info'].tolist() else pd.eval(x))[0])
print(type(df['info_str'].apply(lambda x: x if x in df['info'].tolist() else pd.eval(x))[0]))

输出:

[1, 2, 3]
<class 'str'>
[1 2 3]
<class 'numpy.ndarray'>
另一答案

试试这个

pd_data['douban_info_string_list'] = pd_data['douban_info_string'].map(lambda x: x.replace('[', '').replace(']', '').split(','))

希望能帮助到你。

以上是关于如何在pandas数据帧中反转.astype(str)?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 pandas DF 列中找出哪些值不能使用 astype 函数转换为“int”类型

如何在 pandas 数据帧中有效地使用 one-hot 编码规范化列?

如何将 Google Cloud Storage 中的千兆字节数据加载到 pandas 数据帧中?

pandas astype()错误

将所有数据框列转换为浮动的最快方法 - pandas astype 慢

如何将破折号 (-) 的所有实例替换为 pandas 数据帧中字符串中间的数字零 (0)?