首页 > 编程问答 >基于 pandas DataFrame 中所有列的值的最小行计数条件

基于 pandas DataFrame 中所有列的值的最小行计数条件

时间:2024-09-25 01:45:39浏览次数:7  
标签:python pandas dataframe conditional-statements

假设我在 pandas DataFrame 中有三列,没有任何 null 或空值。

  • 每个项目的设施始终具有唯一的值。
  • 一个项目可以有一个或多个与其关联的供应商。
  • 同一供应商可以显示对于给定项目的不同设施,多次注册。
  • 对于给定项目,设施永远不会与多个供应商关联。
  • 项目值是有序的。
  • 每一行都是唯一的。

示例数据的:

列供应商 列项目 列设施
V1 I1 F1
V1 I1 F2
V2 I1 F4
V1 I2 F1
V1 I2 F2
V2 I2 F3
V3 I2| ||F5 V3
I2 F6 V3
I3 F3 V1
I4 F2 V4
I4 F4 V4
I4 F5 V1
I5 F1 V1
I5 F4 如何创建包含以下内容的 DataFrame ?:“对于每一项,如果有多个供应商与该项目关联,请给我该项目的所有行(否则排除与该项目关联的所有行)。”

在这个示例中,我想要一个 DataFrame I1、I2 和 I4 的所有行,因为它们有多个与它们关联的唯一供应商,并且我将排除涉及 I3 和 I5 的所有行,因为只有一个供应商与它们关联。

我尝试创建一个每个项目的唯一供应商列表以

为条件循环,但到目前为止还没有运气。 len(Appended_Vendor_List_var) > 1 , but so far no luck.


import pandas as pd

# 示例数据
data = {'供应商': ['V1', 'V1', 'V2', 'V1', 'V1', 'V2', 'V3', 'V3', 'V1', 'V4', 'V4', 'V1', 'V1', 'V1'],
        '项目': ['I1', 'I1', 'I1', 'I2', 'I2', 'I2', 'I2', 'I3', 'I4', 'I4', 'I4', 'I5', 'I5'],
        '设施': ['F1', 'F2', 'F4', 'F1', 'F2', 'F3', 'F5', 'F6', 'F3', 'F2', 'F4', 'F5', 'F1']}
df = pd.DataFrame(data)

# 按项目分组并获取供应商计数
vendor_counts = df.groupby('项目')['供应商'].nunique()

# 筛选具有多个供应商的项目
projects_with_multiple_vendors = vendor_counts[vendor_counts > 1].index

# 从原始 DataFrame 中筛选出所选项目的行
result_df = df[df['项目'].isin(projects_with_multiple_vendors)]

print(result_df)

这首先使用 groupby nunique 创建每个项目中唯一供应商的计数。然后,它使用布尔索引选择具有多个供应商的项目。最后,它使用 isin 方法仅过滤原始 DataFrame 中属于这些项目的行。

此代码将返回所请求的 DataFrame,其中包含来自原始 DataFrame 中的 I1、I2 和 I4 的所有行,因为这些项目具有多个与之关联的唯一供应商。

标签:python,pandas,dataframe,conditional-statements
From: 79019661

相关文章

  • 我找不到一种方法让我的 python print 语句在几秒钟后自行删除
    我正在尝试制作一款基于文本的冒险游戏,我希望能够让文本自行删除。举个例子,游戏将使用print()语句打印文本,5秒后文本将被删除或对玩家隐藏。我试图找到其他人与此问题相关的问题,并且我找不到任何信息。我不知道该使用什么命令或与之相关的任何内容,请帮忙。Ivetriedtof......
  • 在 python 中可视化四元数
    我在无人机上安装了一个IMU,每0.1秒收集一次四元数数据(w,x,y,z)。现在我想将四元数数据与实际的无人机方向(视频数据)进行比较。所以我想创建某种盒子对象来显示基于四元数数据的方向。我实现了以下教程,将四元数转换为欧拉以进行可视化:https://www.youtube.com/watch?......
  • 将 pandas 数据框转换为 wiki 标记表
    我正在自动化一些数据处理并从中创建jira票证。熊猫确实有to_html或to_csv甚至to_markdown但jira仅支持用于创建表格的wiki标记。例如<!--wikimarkup-->||header1||header2||header3||\r\n|cell11|cell12|cell13|\r\n|cell21|ce......
  • 有没有办法在 python 中获取特定的键盘输入
    我正在为学校开发一个项目,它目前有行输入(“按Enter继续”),它可以工作,但只要用户按Enter键程序继续,输入是什么并不重要,而且我我希望它仅在按下特定键时才起作用。我查了一下,曾经有一个键盘模块,但由于某种莫名其妙的原因它被删除了,那么还有其他方式获取输入吗?你绝对可以......
  • python+flask计算机毕业设计基于微信小程序的法律问题咨询系统设计与实现(程序+开题+论
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着互联网的飞速发展和智能手机的普及,人们获取信息和解决问题的途径日益多样化。在法律服务领域,传统的线下咨询方式已难以满足公众日益增......
  • python+flask计算机毕业设计基于人脸识别的医疗保险系统的设计与实现(程序+开题+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着科技的飞速发展和人口老龄化的加剧,医疗保险系统面临着前所未有的挑战与机遇。传统医疗保险管理方式依赖于人工审核与纸质记录,不仅效率......
  • python+flask计算机毕业设计基于微信小程序的河南省美食分享平台(程序+开题+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景在移动互联网时代,智能手机和社交媒体已成为人们日常生活不可或缺的一部分。微信小程序作为腾讯推出的一种轻量级应用形态,凭借其无需安装、......
  • python+flask计算机毕业设计基于微信小程序的网络文学管理平台(程序+开题+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着互联网的迅猛发展,网络文学已成为当代文化生活中不可或缺的一部分,它不仅丰富了人们的阅读体验,还促进了文学创作的多元化与普及化。然而......
  • Python不同方式正倒序遍历的时间开销
    fromtimeitimporttimeitli=[iforiinrange(1000000)]deffor_loop(n):#使用for直接遍历ret=0foriinli:ret=li[i]deffor_loop_enumerate(n):#使用enumerate进行遍历ret=0foridx,iinenumerate(li):re......
  • 【入门岛·第2关】python基础
    目录Python实现wordcountVscode连接InternStudiodebug笔记Python实现wordcountimportstringdefwordcount(text):#去掉标点符号,并将文本转换为小写text=text.translate(str.maketrans('','',string.punctuation)).lower()#按空格分割文本为单词......