【问题标题】:Filter pandas dataframe based on defined list of strings which is present in one column根据定义在一列中的字符串列表过滤熊猫数据框
【发布时间】:2020-02-25 17:06:54
【问题描述】:

我需要根据可能出现在其中一列中的字符串列表(以及其他字符串)过滤cars pandas 数据框。 所以我有这样的国家列表:

filterLocation = ['Germany','Austria','Slovenia']

我想在 pandas 数据框的Location 列中过滤掉所有包含这些单词的行。

我有这个:

carsresult = cars.loc[~cars['adCarLocation'].isin(filterLocation)]

但是由于某种原因这不起作用..

【问题讨论】:

  • 提供样本数据和预期输出

标签: python pandas


【解决方案1】:

找出答案:

for country in filterLocation:
    carsML = carsML[~carsML['adCarLocation'].str.contains(country, na=False)]

na=False 是必要的,如果你有空值否则你会得到:

TypeError: 一元操作数类型错误 ~: float

【讨论】:

  • 当您的解决方案有效时,我会说这不是一个好习惯。使用 numpy/pandas 时,应尽量避免循环,以利用库提供的矢量化。当您有 100.000 行时,运行时的差异将是疯狂的。查看这个替代解决方案:stackoverflow.com/questions/12096252/…
  • @JordanKowal 尝试了 isin - 它不适用于我的情况,因为单元格中还有其他字符串。我需要包含无法矢量化的函数。所以下一个最好的事情是列表理解,它比应用更快,这正是我使用的。见这里:stackoverflow.com/a/55557758/2119941
  • 我的错,没看到专栏里还有别的词。我在这件事上找到了一个有趣的话题。看看它是否适合您以及它是否更快会很有趣。 stackoverflow.com/questions/44933071/…
猜你喜欢
  • 2019-03-04
  • 2021-12-01
  • 2020-08-08
  • 2014-12-27
  • 2019-04-24
  • 1970-01-01
  • 2020-05-05
  • 2020-08-16
  • 2019-12-09
相关资源
最近更新 更多