【问题标题】:How to filter pandas dataframe by string如何按字符串过滤熊猫数据框
【发布时间】:2015-09-24 02:59:32
【问题描述】:

我有一个包含几列的数据框。这是一个例子:

A          B  C  D      MachineCall    F
0  1 2013-01-02  1  3   Machine1  foo
1  1 2013-01-02  1  3  Machine2  foo
2  1 2013-01-02  1  3   Machine3  foo
3  1 2013-01-02  1  3  Machine1  foo

我想创建一个仅使用 Machine1 行中的数据的新数据框。我不想更改列的顺序。

我试过了

df2 = df2[(df2 == 'Machine1')]

出错了

TypeError: Could not compare ['Machine1'] with block values:

df2 = df2[(df2'MachineCall'].isin('Machine1')]

得到了

TypeError: only list-like objects are allowed to be passed to Series.isin(), you passed a 'str'

【问题讨论】:

  • 你的标题不应该是“过滤器”而不是“排序”吗?
  • 是的,我可以改变它。不过,不确定这个问题是否仍然对其他人有帮助。
  • 关于您的错误,第一个错误可能是因为您试图将包含混合 dtype 列的 df 与 str 进行比较,但是当 dtypes 不匹配时,这会出错,对于第二个错误,它很漂亮清楚,它应该是一个包含单个元素的列表:df2 = df2[(df2'MachineCall'].isin(['Machine1'])]

标签: python pandas dataframe typeerror


【解决方案1】:

以下代码有效。

df[df['MachineCall'].str.contains("Machine1")] 

【讨论】:

    【解决方案2】:

    new_df = df2[df2['MachineCall'] == 'Machine1']

    【讨论】:

      猜你喜欢
      • 2023-03-14
      • 2018-10-04
      • 2019-04-13
      • 2019-08-22
      • 2018-07-13
      • 2019-03-04
      • 2015-06-25
      • 2017-12-15
      • 2014-03-31
      相关资源
      最近更新 更多