【问题标题】:Using Boolean Statements and manipulating original dataframe使用布尔语句和操作原始数据框
【发布时间】:2018-04-10 06:46:44
【问题描述】:

所以,我有一个看起来像这样的数据框:

有 308 个不同的 ORIGIN_CITY_NAME 和 12 个不同的 UNIQUE_CARRIER。

我正在尝试删除唯一航空公司数量

现在,我想获取这个结果并处理我的原始数据 df,以便我可以删除 ORIGIN_CITY_NAME 对应为 TRUE 的行。

我有一个想法是在 Python 中使用 isin() 函数或 apply(lambda) 函数,但我不熟悉如何去做。有没有更优雅的方法来解决这个问题?谢谢!

【问题讨论】:

  • 向我们展示您的(不是那么)优雅的代码,我们可以提供帮助
  • @0TTT0 'not-so-elegant' 代码不起作用,因为我正在尝试使用 isin() 函数。但是,如果您有任何意见,我将不胜感激!谢谢
  • @misheekoh 我想我知道你在追求什么,我已经相应地留下了答案。但是,尝试的代码在几个方面有所帮助。 1. 通常,你问一个问题是因为你不明白某事。很可能,如果您不了解某些内容,则可能会错误地描述它。因此,提供的代码然后演示您的尝试可能会阐明您正在尝试做什么。 2. 这表明你实际上是在尝试自己做这件事。这个网站运行的人自愿他们的时间来回答问题。我们通常不喜欢为那些不愿意付出努力的人付出努力。
  • @piRSquared 感谢您的意见。是的,我绝对明白,在这个社区中,我必须为我试图寻求帮助的事情付出努力。我将确保在以后的帖子中提供更好、更简洁的论据和记录。

标签: python python-3.x pandas data-manipulation


【解决方案1】:

filter 就是为此而生的

df.groubpy('ORIGIN_CITY_NAME').filter(
    lambda d: d.UNIQUE_CARRIER.nunique() >= 5
)

但是,要继续沿着您试图从...中获得结果的方向发展......

我会使用map

mask = df.groubpy('ORIGIN_CITY_NAME').UNIQUE_CARRIER.nunique() >= 5

df[df.ORIGIN_CITY_NAME.map(mask)]

transform

mask = df.groupby('ORIGIN_CITY_NAME').UNIQUE_CARRIER.transform(
    lambda x: x.nunique() >= 5
)

df[mask]

【讨论】:

    猜你喜欢
    • 2023-01-09
    • 2019-06-17
    • 2015-08-03
    • 2021-11-08
    • 1970-01-01
    • 1970-01-01
    • 2013-01-31
    • 2013-10-09
    • 2017-11-10
    相关资源
    最近更新 更多