【问题标题】:List Comprehensions and how to use it with pandas [closed]列出理解以及如何将其与 pandas 一起使用 [关闭]
【发布时间】:2020-09-14 07:41:35
【问题描述】:

我仍然很难理解列表推导。

以下面的列表为例:

lst = ["Medical Center", "Playground", "Park", "Soccer Field", "Swim School", "Summer Camp", "Museum"]

Qn 1) 如何使用列表推导来遍历上述列表并检查具有一百个元素的熊猫数据框(比如说)?

Qn 2) 我想知道是否有一个很好的资源可以更清晰地理解列表;我看过一些网上的资源,虽然简单的操作更容易理解,但一旦变成列表中的列表(列表中,列表中等),那么它就像泥巴一样清晰

【问题讨论】:

  • 你为什么要使用列表理解和 padas 来做某事。将列表转换为集合并用它做一些 pandas iloc 魔术可能更好。
  • 问题的目的不仅仅是解决挑战;我确实意识到还有其他方法可以解决它,但我对列表推导很好奇,仅此而已。我想找到一种方法来做到这一点,更重要的是,如果有人能解释他们做了什么
  • 如果你将 list comp 与 pandas 一起使用,你会失去 c++ pandas implenetationg 给你的速度。学习列表组合非常有用 - 但不是为了那个。 SO上有很多列表比较帖子,f.e. stackoverflow.com/questions/20639180/…stackoverflow.com/questions/18649884/…stackoverflow.com/questions/37822872/… 和其他资源:youtube.com/watch?v=1HlyKKiGg-4 ...谷歌很容易找到。 hth

标签: python list-comprehension


【解决方案1】:

您可以这样做,例如,如果您的数据框中只有以字母“P”开头的元素,并使用它通过列表理解过滤您的列表:

import pandas as pd

lst = ["Medical Center",
       "Playground",
       "Park",
       "Soccer Field",
       "Swim School",
       "Summer Camp",
       "Museum"
       ]

# filtered_lst = [elem for elem in lst if elem.startswith('P')]

df = pd.DataFrame(["Playground", "Park"])

# Extract dataframe values into a flattened list:
df_values = [k for i in df.values for k in i]

# Compare original list elements to dataframe values:
common_elements = [elem for elem in lst if elem in df_values]

print(common_elements)

将导致:

['Playground', 'Park']

【讨论】:

  • 感谢@Gustav,这行得通。你能向我解释一下列表理解吗?我如何/在哪里可以了解有关此主题的更多信息?
  • 太棒了!我很高兴听到它:) 如果您发现此答案有用,请考虑将其标记为已接受的答案。 Python 列表理解只是用于过滤元素值等的常用 for 循环和 if 语句的简短形式,我发现本教程很有用:realpython.com/list-comprehension-python
  • 也更新了代码,以提高可读性
猜你喜欢
  • 2017-03-04
  • 2016-09-10
  • 2018-11-22
  • 2014-12-10
  • 1970-01-01
  • 2022-05-05
  • 2022-07-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多