根据对象的类型(即 str)从 DataFrame 中选择行

新手上路,请多包涵

所以有一个 DataFrame 说:

 >>> df = pd.DataFrame({
...                 'A':[1,2,'Three',4],
...                 'B':[1,'Two',3,4]})
>>> df
       A    B
0      1    1
1      2  Two
2  Three    3
3      4    4

我想选择特定列的特定行的数据类型为 str 类型的行。

例如,我想选择 type 列中数据的行 Astr 。所以它应该打印如下内容:

    A      B
2  Three  3

谁的直观代码是这样的:

 df[type(df.A) == str]

这显然行不通!

谢谢请帮忙!

原文由 Devi Prasad Khatua 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 409
2 个回答

这有效:

 df[df['A'].apply(lambda x: isinstance(x, str))]

原文由 DrTRD 发布,翻译遵循 CC BY-SA 4.0 许可协议

你可以做一些 类似于 你所要求的事情

In [14]: df[pd.to_numeric(df.A, errors='coerce').isnull()]
Out[14]:
       A  B
2  Three  3

为什么只有相似?因为 Pandas 将事物存储在同类列中(列中的所有条目都属于同一类型)。即使您从异构类型构造 DataFrame,它们也都被制成列,每个列都有最小公分母:

 In [16]: df.A.dtype
Out[16]: dtype('O')

因此,您不能询问哪些行是什么类型——它们都属于同一类型。您 可以 做的是尝试将条目转换为数字,并检查转换失败的位置(这就是上面的代码所做的)。

原文由 Ami Tavory 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题