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

我有一个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)

但他们都没有工作。在这种情况下,应返回第一行。我该如何修复它?


慕的地10843
浏览 102回答 3
3回答

缥缈止盈

你是这个意思吗?df['CAT'].apply(lambda x: x if isinstance(x, list) else None)0    [Long Sleeves, Jacket]1                      None2                      NoneName: CAT, dtype: object

呼唤远方

你也可以使用apply像df[df.CAT.apply(type) == list]   PRDS_ID                     CAT  PRICE   0      A1  [Long Sleeves, Jacket]     85df.CAT.apply(type)然后将为您提供Series每行的对象类型通过比较df.CAT.apply(type) == list我们可以得到布尔值来进行索引

守着一只汪

PANDAS 细胞没有istype方法;这是针对 Python 基础对象和其他实现该运算符的对象。相反,您必须将检查包装在应用于每个单元格内容的 lambda 函数中:您引用单元格内的 Python 对象,并测试它。>>> df[df.iloc[:,1].map(lambda x: type(x) == list)]  PRDS_ID                     CAT  PRICE0      A1  [Long Sleeves, Jacket]     85>>> df[df.iloc[:,1].map(lambda x: type(x) == str)]  PRDS_ID    CAT  PRICE1      B1  Shoes     552      A2  Skirt     40
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python