冰菲 发表于 2026-1-23 16:06:54

pivot_table代码如何使用

pivot_table代码如何使用
我想透视合计数,个数,并且没有序号

FishC 发表于 2026-1-23 16:08:21

鱼油,pivot_table 是 pandas 中用于数据透视的函数,可以方便地对数据进行聚合分析。以下是使用示例,计算总和和个数,并去除序号。

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


import pandas as pd

data = {
    'Category': ['A', 'A', 'B', 'B', 'A', 'B'],
    'Value':
}
df = pd.DataFrame(data)


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

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

代码:


pivot = pd.pivot_table(df, index='Category', values='Value', aggfunc=['sum', 'count'])


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


pivot_reset = pivot.reset_index()
print(pivot_reset)


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

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

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

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

冰菲 发表于 2026-1-23 16:25:00

透视后生成工作表列可以排序吗

FishC 发表于 2026-1-23 16:25:50

冰菲 发表于 2026-01-23 16:25
透视后生成工作表列可以排序吗

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

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

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


import pandas as pd

# 创建示例数据
data = {
    'Category': ['A', 'A', 'B', 'B', 'C', 'C'],
    'Value':
}
df = pd.DataFrame(data)

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


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


# 按 'sum' 列降序排序
sorted_pivot = pivot_reset.sort_values(by=('sum', 'Value'), ascending=False)
print("\n按总和降序排序:")
print(sorted_pivot)


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


# 重命名列为单级
pivot_reset.columns = ['Category', 'Sum', 'Count']
# 按 'Sum' 列升序排序
sorted_pivot_simple = pivot_reset.sort_values(by='Sum', ascending=True)
print("\n重命名后按 Sum 升序排序:")
print(sorted_pivot_simple)


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


# 调整列顺序
reordered_pivot = pivot_reset[['Category', 'Count', 'Sum']]
print("\n调整列顺序后:")
print(reordered_pivot)


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

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

冰菲 发表于 2026-1-23 16:31:38

厂家        金额        单号        运费
AB        6640.45        14        22134.93
BD        4.52        2        226.42


我想实现这样的效果
厂家        单号        运费        金额
AB        14        22134.93        6640.45
BD        2        226.42        4.52

FishC 发表于 2026-1-23 16:31:55

冰菲 发表于 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)


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

输出效果如下:


原始数据:
厂家      金额单号       运费
0AB6640.451422134.93
1BD   4.52   2    226.42

调整列顺序后:
厂家单号       运费      金额
0AB1422134.936640.45
1BD   2    226.42   4.52


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

希望这能解决你的问题!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

不二如是 发表于 2026-1-23 16:53:13

1、透视统计【合计 + 个数】,且无序号

result = (
    pd.pivot_table(
      df,
      values='销量',
      index='地区',
      aggfunc=['sum', 'count']
    )
    .reset_index()
)
2、列名拉平(可选,但常用)

result.columns = ['地区', '销量合计', '销量个数']
3、最简理解


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

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

只合计:

pd.pivot_table(df, values='销量', index='地区', aggfunc='sum').reset_index()
只计数:

pd.pivot_table(df, values='销量', index='地区', aggfunc='count').reset_index()
如果你的字段名不是「地区 / 销量」,直接替换即可。

冰菲 发表于 2026-1-23 17:34:21

统计个数如何去除重复
页: [1]
查看完整版本: pivot_table代码如何使用