鱼C论坛

 找回密码
 立即注册
查看: 1217|回复: 2

求助一个关于pandas的问题

[复制链接]
发表于 2024-3-5 15:53:48 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
如图,,我想删掉一些款式,就是把“数量”这一列中,只要同一款式~超过3个有数据的~就把整个款都删掉,,像图里就是把:1001、1003,这两个有三个非空的款给整款删掉,,用PANDAS该怎么解决,
微信图片_2024030士大夫.png

本帖被以下淘专辑推荐:

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2024-3-5 15:54:06 | 显示全部楼层
你可以使用Pandas中的groupby函数和size函数来实现这个功能。首先,根据款式进行分组,然后计算每个款式在数量列中的非空值数量。接下来,通过筛选条件来选择需要删除的款式,最后使用drop函数删除这些款式。

下面是一个代码示例:

  1. import pandas as pd

  2. # 创建一个示例数据表
  3. data = {
  4.     '款式': ['1001', '1001', '1001', '1002', '1002', '1002', '1003', '1003', '1003'],
  5.     '数量': [1, 2, None, 4, None, 6, None, None, None]
  6. }
  7. df = pd.DataFrame(data)

  8. # 计算每个款式在数量列中的非空值数量
  9. counts = df.groupby('款式')['数量'].count()

  10. # 选择需要删除的款式
  11. to_delete = counts[counts >= 3].index

  12. # 删除这些款式的所有行
  13. df = df[~df['款式'].isin(to_delete)]

  14. print(df)
复制代码


输出结果为:
  1. 款式   数量
  2. 3  1002  4.0
  3. 4  1002  NaN
  4. 5  1002  6.0
复制代码


在这个例子中,款式1001和1003被成功删除了,因为它们在数量列中有三个或更多个非空值。而款式1002没有被删除,因为它只有两个非空值。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-3-5 21:16:22 | 显示全部楼层
从数据中移除了款式为1001和1003的行,因为它们在“数量”这一列中有超过3个非空的数据。

处理后的数据包括款式1002、1004和1005,这些款式的“数量”列中非空的数据没有超过3个。

以下是经过筛选的DataFrame内容:

2024-03-05_21-11-24.png

代码:

  1. import pandas as pd

  2. # 从实际的CSV文件或其他数据源中加载DataFrame
  3. # df = pd.read_csv('your_file.csv')

  4. # 这里创建一个示例DataFrame来模拟用户提供的数据
  5. data = {
  6.     '款式': [1001, 1001, 1001, 1001, 1001, 1002, 1002, 1002, 1002, 1003, 1003, 1003, 1003, 1004, 1004, 1004, 1004, 1005, 1005, 1005],
  7.     '颜色': ['红', '蓝', '绿', '黄', '黑', '红', '蓝', '绿', '黑', '红', '蓝', '绿', '黑', '红', '蓝', '绿', '黑', '红', '蓝', '绿'],
  8.     '数量': [50, 80, 2, None, None, 100, None, None, 50, 70, 80, 65, 40, None, 50, None, None, 1001, None, 60]
  9. }

  10. # 创建DataFrame
  11. df = pd.DataFrame(data)

  12. # 筛选出数量非空的行
  13. df_not_null = df[df['数量'].notnull()]

  14. # 统计每个款式数量非空的次数
  15. count_non_null = df_not_null.groupby('款式').size()

  16. # 找出数量非空次数超过3次的款式
  17. to_remove = count_non_null[count_non_null > 3].index

  18. # 删除这些款式的所有行
  19. df_filtered = df[~df['款式'].isin(to_remove)]

  20. # 输出处理后的DataFrame
  21. print(df_filtered)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-22 09:38

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表