python - 基于多个条件对 DataFrame 进行切片

标签 python pandas dataframe for-loop filter

我希望你一切都好。我有一个关于 Python 中的 DataFrame 的问题。

<表类=“s-表”> <标题> 公司 职位名称 人名 <正文> 苹果 创始人 史蒂夫·乔布斯 苹果 联合创始人 史蒂夫·沃兹尼亚克 微软 创始人 比尔·盖茨 微软 联合创始人 保罗·艾伦 Paypal 联合创始人 彼得·蒂尔 特斯拉 董事会成员 拉里·埃里森 特斯拉 首席财务官 扎克·柯克霍恩 Snapchat 德万·费尔曼 德万·费尔曼

我想过滤并创建一个新的数据框,它仅根据以下条件保留行:

  1. 如果是创始人,则保留行
  2. 如果找不到创始人,则找到联合创始人
  3. 如果找不到联合创始人,则担任董事会成员
  4. 如果找不到董事会成员,则寻找董事会成员 CFO

从数据框中删除所有其他行。请注意,每个公司只能有 1 行。

因此我希望得到以下输出:

<表类=“s-表”> <标题> 公司 职位名称 人名 <正文> 苹果 创始人 史蒂夫·乔布斯 微软 创始人 比尔·盖茨 Paypal 联合创始人 彼得·蒂尔 特斯拉 董事会成员 拉里·埃里森

我确信有一种方法可以使用循环函数来做到这一点,但是由于我对 Python 很陌生,这对我来说仍然非常困难。我愿意使用所有库,例如 pandas 和 numpy。请尽可能清楚地解释您的代码。

希望尽快收到您的来信。谢谢您,如果我的问题不清楚,请告诉我。

最佳答案

您可以在此处使用pd.Category:

df['Job Title'] = pd.Categorical(df['Job Title'].str.strip(),
                                 categories=['Founder', 'Co-Founder', 'Board Member', 'CFO'],
                                 ordered=True
                                )

df.sort_values(['Job Title']).drop_duplicates('Company').dropna()

输出:

      Company     Job Title    Person Name
0      Apple        Founder     Steve Jobs
2  Microsoft        Founder     Bill Gates
4     Paypal     Co-Founder    Peter Thiel
5      Tesla   Board Member  Larry Ellison

关于python - 基于多个条件对 DataFrame 进行切片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65223816/

相关文章:

python - 如何从Notepad++卸载Python缩进插件?

python - 为决策树中的每个数据点找到对应的叶节点 (scikit-learn)

python/pandas - 存储二进制列表

python - 在 Pandas 和 NumPy 中处理 0 和 -0

Pandas DataFrame 从 DateTimeIndex 到分钟或小时增量计数器

python - Python 中的多处理和套接字

python - 如何在 Pygame 中克隆 Sprite ?

python - pandas中groupby一列后如何在不同列之间进行操作?

r - 对数据框的行进行排序

python - 如何使用pandas DataFrame构建器的函数from_records强制数据类型?