鱼C论坛

 找回密码
 立即注册
查看: 22|回复: 5

Python 如何跟Excel一样加一个筛选器,可以选其中一个类型和不选其中一个类型

[复制链接]
发表于 4 小时前 | 显示全部楼层 |阅读模式

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

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

x
df=pd.pivot_table(data11,values=['费用','经纪费金额','单号'],index=['产品名称'],columns=None,aggfunc={'单号':'count','费用':'sum','经纪费金额':'sum'}).reset_index()

df.columns = ['产品名称', '经纪费金额','单号', '费用']


Python 如何跟Excel一样加一个筛选器,可以选其中一个类型和不选其中一个类型

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

使用道具 举报

发表于 4 小时前 | 显示全部楼层
在 Python 中实现类似 Excel 筛选器的功能,可以使用 pandas 的布尔索引。以下是两种常见的筛选方式:


  1. import pandas as pd

  2. # 假设您的 DataFrame 名为 df,且有一个名为“类型”的列
  3. # 示例数据
  4. data = {'类型': ['A', 'B', 'A', 'C', 'B'],
  5.         '数值': [10, 20, 30, 40, 50]}
  6. df = pd.DataFrame(data)

  7. # 1. 选择类型为 'A' 的行(选其中一个类型)
  8. selected_type = 'A'
  9. filtered_df = df[df['类型'] == selected_type]
  10. print("筛选出类型为 A 的行:")
  11. print(filtered_df)

  12. # 2. 排除类型为 'A' 的行(不选其中一个类型)
  13. filtered_df_exclude = df[df['类型'] != selected_type]
  14. print("\n排除类型为 A 的行:")
  15. print(filtered_df_exclude)
复制代码


您可以根据需要将 '类型'selected_type 替换为实际的列名和值。如果有多条件筛选,可以使用 &(与)和 |(或)操作符组合条件。

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

使用道具 举报

 楼主| 发表于 4 小时前 | 显示全部楼层
可以在我代码基础上加吗
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 4 小时前 | 显示全部楼层
冰菲 发表于 2026-01-27 09:41
可以在我代码基础上加吗


可以在您代码基础上添加筛选功能。这是完整示例:

import pandas as pd

# 假设您的原始数据已经存在
df = pd.pivot_table(data11,
                   values=['单号', '费用', '经纪费金额'],
                   index=,  # 请替换为实际的索引列名
                   columns=None,
                   aggfunc={'单号':'count', '费用':'sum', '经纪费金额':'sum'}
                  ).reset_index()

# 假设您的列名需要重新命名(请根据实际情况修改)
df.columns =   # 请替换为实际的列名列表

# 现在添加筛选功能
# 假设您要根据某个列(比如"类型"列)进行筛选

# 1. 选择其中一个类型(比如类型"A")
filtered_selected = df[df == "A"]

# 2. 不选其中一个类型(比如排除类型"A")
filtered_excluded = df[df != "A"]

print("筛选出类型为 A 的行:")
print(filtered_selected)

print("\n排除类型为 A 的行:")
print(filtered_excluded)

# 如果要动态选择筛选条件
selected_type = input("请输入要筛选的类型:")  # 或者设置为您需要的值
filtered_selected_dynamic = df[df == selected_type]

print(f"\n筛选出类型为 {selected_type} 的行:")
print(filtered_selected_dynamic)

请注意:
1. 请将代码中的 data11indexdf.columns 替换为您的实际变量和列名
2. 筛选时需要知道具体要筛选的列名(如示例中的"类型"列)
3. 如果您的数据中没有"类型"列,请替换为实际存在的列名

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

使用道具 举报

 楼主| 发表于 4 小时前 | 显示全部楼层
不对,都透视完了,还怎么筛选
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 4 小时前 | 显示全部楼层
冰菲 发表于 2026-01-27 09:43
不对,都透视完了,还怎么筛选


抱歉,我理解错了!在透视表之前就需要筛选数据。以下是正确的修改:

# 首先筛选原始数据,再创建透视表

# 假设要筛选的列名为“类型”
selected_type = 'A'  # 要选择的类型

# 1. 筛选出类型为'A'的数据
filtered_data = data11[data11['类型'] == selected_type]

# 2. 排除类型为'A'的数据
excluded_data = data11[data11['类型'] != selected_type]

# 对筛选后的数据创建透视表
df_selected = pd.pivot_table(filtered_data,
                            values=,
                            index=,
                            columns=None,
                            aggfunc={'单号':'count', '费用':'sum', '经纪费金额':'sum'}
                           ).reset_index()

df_excluded = pd.pivot_table(excluded_data,
                             values=,
                             index=,
                             columns=None,
                             aggfunc={'单号':'count', '费用':'sum', '经纪费金额':'sum'}
                            ).reset_index()

# 如果需要同时满足多个条件,可以使用以下方式:
# 选择类型为'A'或'B'的数据
filtered_data_multi = data11[data11['类型'].isin(['A', 'B'])]

# 排除类型为'A'和'B'的数据
excluded_data_multi = data11[~data11['类型'].isin(['A', 'B'])]

# 如果需要更复杂的筛选,可以使用query方法:
filtered_data_query = data11.query("类型 == 'A' and 费用 > 1000")

# 设置列名
df_selected.columns =   # 设置列名
df_excluded.columns =   # 设置列名

这样,您就可以在创建透视表之前先筛选数据,然后对筛选后的数据进行透视分析。

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-27 14:07

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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