为了账号安全,请及时绑定邮箱和手机立即绑定

Python:如何按pandas中的数据类型过滤DataFrame?

Python:如何按pandas中的数据类型过滤DataFrame?

慕的地10843 2023-08-08 09:54:29
我有一个DataFrame这样的;df = pd.DataFrame([    ['A1', ['Long Sleeves', 'Jacket'], 85],    ['B1', 'Shoes', 55],    ['A2', 'Skirt', 40]], columns=['PRDS_ID', 'CAT', 'PRICE'])我想选择类型来自list“CAT”列的行。因此,我尝试了以下代码;df[df.CAT.astype(list) == True]df['CAT'].apply(lambda x: len(x) > 1)但他们都没有工作。在这种情况下,应返回第一行。我该如何修复它?
查看完整描述

3 回答

?
缥缈止盈

TA贡献2041条经验 获得超4个赞

你是这个意思吗?


df['CAT'].apply(lambda x: x if isinstance(x, list) else None)


0    [Long Sleeves, Jacket]

1                      None

2                      None

Name: CAT, dtype: object


查看完整回答
反对 回复 2023-08-08
?
呼唤远方

TA贡献1856条经验 获得超11个赞

你也可以使用apply

df[df.CAT.apply(type) == list]
  PRDS_ID                     CAT  PRICE
  0      A1  [Long Sleeves, Jacket]     85
  • df.CAT.apply(type)然后将为您提供Series每行的对象类型

  • 通过比较df.CAT.apply(type) == list我们可以得到布尔值来进行索引


查看完整回答
反对 回复 2023-08-08
?
守着一只汪

TA贡献1872条经验 获得超3个赞

PANDAS 细胞没有istype方法;这是针对 Python 基础对象和其他实现该运算符的对象。相反,您必须将检查包装在应用于每个单元格内容的 lambda 函数中:您引用单元格内的 Python 对象,并测试它。


>>> df[df.iloc[:,1].map(lambda x: type(x) == list)]

  PRDS_ID                     CAT  PRICE

0      A1  [Long Sleeves, Jacket]     85

>>> df[df.iloc[:,1].map(lambda x: type(x) == str)]

  PRDS_ID    CAT  PRICE

1      B1  Shoes     55

2      A2  Skirt     40


查看完整回答
反对 回复 2023-08-08
  • 3 回答
  • 0 关注
  • 101 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信