gpt4 book ai didi

python - Pandas - 按 'type' 选择行(不是 dtype)

转载 作者:太空宇宙 更新时间:2023-11-03 13:59:32 25 4
gpt4 key购买 nike

我有一个数据框....

    _id           doc_count doc_media_url   image_tagging
0 327bcc224b8c7049 1.0 URL1 {'success': True, 'tags': [], 'custom_tags': []}
1 e466c4966666c69e 1.0 URL2 {'success': True, 'tags': [{'tag': 'Cartoon', ...
2 b4303830389cf8f9 1.0 URL3 {'success': True, 'tags': [{'tag': 'Poster', '...
3 00a424323220b68e 1.0 URL4 {'success': True, 'tags': [{'tag': 'Stage', 'c...
4 c66e3e2921a7c7cd 1.0 URL5 {'success': True, 'tags': [], 'custom_tags': []}

...我的问题是 image_tagging 列。目前它是一列字典。我打算将字典的键提取到它们自己的列中,但是我受到了阻碍,因为单行数据不是字典而是一个列表,它会抛出任何需要字典的操作。

df.image_tagging.apply(lambda x: type(x)).value_counts()

<class 'dict'> 14067
<class 'list'> 1
Name: image_tagging, dtype: int64

此列表项不应该存在,因此我想清除该行。但是,我在按类型选择行时遇到了问题,因为 Pandas 主要关注 dtypes,而 dict 和 list 被归类为相同的(我认为无论如何!)。

有没有一种方法可以选择该列中包含列表项的行,以便我可以将其从 DataFrame 中删除?

感谢您的帮助!

最佳答案

试试这个:

df = df[df.image_tagging.map(type)==dict]

演示:

In [146]: df = pd.DataFrame({
...: 'A': [{'1':1, 'a':2}, [1,2,3], {'2':2}],
...: })

In [147]: df
Out[147]:
A
0 {'1': 1, 'a': 2}
1 [1, 2, 3]
2 {'2': 2}

In [148]: df = df[df.A.map(type) == dict]

In [149]: df
Out[149]:
A
0 {'1': 1, 'a': 2}
2 {'2': 2}

关于python - Pandas - 按 'type' 选择行(不是 dtype),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50967231/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com