TypeError:包含和排除都必须都是非字符串序列

时间:2018-07-09 16:58:49

标签: python python-3.x pandas

我有以下数据:

  1. 餐厅ID int64
  2. 餐厅名称对象
  3. 国家/地区代码int64
  4. 城市对象
  5. 地址对象
  6. 位置对象
  7. 详细地点对象
  8. 经度float64
  9. 纬度float64
  10. 美食对象
  11. 两个int64的平均费用
  12. 货币对象
  13. 有桌子预订对象
  14. 具有在线交付对象
  15. 立即交付对象
  16. 切换到订购菜单对象
  17. 价格范围int64
  18. av_rating float64
  19. 评级颜色对象
  20. 评级文字对象
  21. 投票int64
  22. dtype:对象

当我在下面运行代码时:。

too_verbose_columns = (data.select_dtypes(include = 'O')\
    .columns[data.select_dtypes(include='O').nunique() > 2]\  
    .tolist())

我遇到这种错误

  

TypeError:包含和排除必须都为非字符串序列。

如何摆脱这个错误?

1 个答案:

答案 0 :(得分:3)

字符串'O'不视为序列。您需要输入例如列表。此外,无需重复呼叫select_dtypes

data = pd.DataFrame([['1', '2', '3'], ['2', '2', '4'], ['5', '6', '7']],
                    columns=['col1', 'col2', 'col3'])

df = data.select_dtypes(include=['O'])

too_verbose_columns = df.columns[df.apply(pd.Series.nunique) > 2].tolist()

print(too_verbose_columns)

['col1', 'col3']

col2超出范围,因为它只有2个唯一元素。