鱼C论坛

 找回密码
 立即注册
查看: 25|回复: 7

pivot_table代码如何使用

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

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

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

x
pivot_table代码如何使用
我想透视合计数,个数,并且没有序号
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 3 小时前 | 显示全部楼层
鱼油,pivot_table 是 pandas 中用于数据透视的函数,可以方便地对数据进行聚合分析。以下是使用示例,计算总和和个数,并去除序号。

首先,导入 pandas 并创建示例数据:


  1. import pandas as pd

  2. data = {
  3.     'Category': ['A', 'A', 'B', 'B', 'A', 'B'],
  4.     'Value': [10, 20, 30, 40, 50, 60]
  5. }
  6. df = pd.DataFrame(data)
复制代码


然后,使用 pd.pivot_table 进行透视。参数说明:

- index: 指定分组的行键,这里用 'Category'。
- values: 指定要聚合的列,这里用 'Value'。
- aggfunc: 指定聚合函数,这里用 ['sum', 'count'] 计算总和和个数。

代码:


  1. pivot = pd.pivot_table(df, index='Category', values='Value', aggfunc=['sum', 'count'])
复制代码


此时,pivot 是一个 DataFrame,索引是 'Category'。为了去除序号(即索引),使用 reset_index() 重置索引:


  1. pivot_reset = pivot.reset_index()
  2. print(pivot_reset)
复制代码


这样,'Category' 成为普通列,输出中没有额外的序号。如果需要打印时完全隐藏索引,可以使用 print(pivot_reset.to_string(index=False))

输出结果将显示每个 Category 的 Value 总和和个数。

希望这个示例对你有帮助!如果有更多问题,请随时提问。

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

使用道具 举报

 楼主| 发表于 2 小时前 | 显示全部楼层
透视后生成工作表列可以排序吗
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2 小时前 | 显示全部楼层
冰菲 发表于 2026-01-23 16:25
透视后生成工作表列可以排序吗


鱼油,是的,透视后生成的列可以排序。你可以使用 pandas 的 sort_values 方法对 DataFrame 按列值排序,或者通过调整列顺序来排序列。

以下是一个示例,展示如何对透视后的结果进行排序:

首先,创建数据并透视(基于之前的例子):


  1. import pandas as pd

  2. # 创建示例数据
  3. data = {
  4.     'Category': ['A', 'A', 'B', 'B', 'C', 'C'],
  5.     'Value': [10, 20, 30, 40, 50, 60]
  6. }
  7. df = pd.DataFrame(data)

  8. # 透视,计算总和和个数
  9. pivot = pd.pivot_table(df, index='Category', values='Value', aggfunc=['sum', 'count'])
  10. pivot_reset = pivot.reset_index()
  11. print("原始透视结果:")
  12. print(pivot_reset)
复制代码


然后,按总和列降序排序。注意,由于 aggfunc=['sum', 'count'] 创建了多级列名,需要指定正确的列名:


  1. # 按 'sum' 列降序排序
  2. sorted_pivot = pivot_reset.sort_values(by=('sum', 'Value'), ascending=False)
  3. print("\n按总和降序排序:")
  4. print(sorted_pivot)
复制代码


如果列名是单级(例如,透视后重命名了列),可以直接使用列名字符串排序。例如,重命名列后排序:


  1. # 重命名列为单级
  2. pivot_reset.columns = ['Category', 'Sum', 'Count']
  3. # 按 'Sum' 列升序排序
  4. sorted_pivot_simple = pivot_reset.sort_values(by='Sum', ascending=True)
  5. print("\n重命名后按 Sum 升序排序:")
  6. print(sorted_pivot_simple)
复制代码


如果你想调整列的顺序(例如,将 'Count' 列放在 'Sum' 列之前),可以这样操作:


  1. # 调整列顺序
  2. reordered_pivot = pivot_reset[['Category', 'Count', 'Sum']]
  3. print("\n调整列顺序后:")
  4. print(reordered_pivot)
复制代码


总之,透视后可以通过 sort_values 按值排序,或通过列选择调整顺序。希望这能解决你的问题!

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

使用道具 举报

 楼主| 发表于 2 小时前 | 显示全部楼层
厂家        金额        单号        运费
AB        6640.45        14        22134.93
BD        4.52        2        226.42


我想实现这样的效果
厂家        单号        运费        金额
AB        14        22134.93        6640.45
BD        2        226.42        4.52
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2 小时前 | 显示全部楼层
冰菲 发表于 2026-01-23 16:31
厂家        金额        单号        运费
AB        6640.45        14        22134.93
BD        4. ...


鱼油,根据你的需求,这不是一个透视操作,而是简单的列顺序调整。你可以直接对 DataFrame 的列进行重新排序。

以下是示例代码:

假设你的数据已经在一个名为 df 的 DataFrame 中,列顺序为:厂家金额单号运费


import pandas as pd

# 创建示例数据(模拟你的数据)
data = {
    '厂家': ,
    '金额': ,
    '单号': ,
    '运费':
}
df = pd.DataFrame(data)
print("原始数据:")
print(df)

# 调整列顺序:厂家、单号、运费、金额
new_order =
df_reordered = df
print("\n调整列顺序后:")
print(df_reordered)


这样,列顺序就变成了你想要的:厂家、单号、运费、金额。

输出效果如下:


原始数据:
  厂家      金额  单号       运费
0  AB  6640.45  14  22134.93
1  BD     4.52   2    226.42

调整列顺序后:
  厂家  单号       运费      金额
0  AB  14  22134.93  6640.45
1  BD   2    226.42     4.52


如果你是从 Excel 或 CSV 读取的数据,操作方式相同。只需在读取后调整列顺序即可。

希望这能解决你的问题!

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

使用道具 举报

发表于 2 小时前 | 显示全部楼层
1、透视统计【合计 + 个数】,且无序号

  1. result = (
  2.     pd.pivot_table(
  3.         df,
  4.         values='销量',
  5.         index='地区',
  6.         aggfunc=['sum', 'count']
  7.     )
  8.     .reset_index()
  9. )
复制代码

2、列名拉平(可选,但常用)

  1. result.columns = ['地区', '销量合计', '销量个数']
复制代码

3、最简理解

  • sum → 合计数
  • count → 个数
  • reset_index() → 去掉左侧序号

4、只要其中一个(更简)

只合计:

  1. pd.pivot_table(df, values='销量', index='地区', aggfunc='sum').reset_index()
复制代码

只计数:

  1. pd.pivot_table(df, values='销量', index='地区', aggfunc='count').reset_index()
复制代码

如果你的字段名不是「地区 / 销量」,直接替换即可。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 1 小时前 | 显示全部楼层
统计个数如何去除重复
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-23 19:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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