鱼C论坛

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

[已解决]数据汇总问题,求大师帮忙,谢谢

[复制链接]
发表于 2023-5-11 12:55:07 | 显示全部楼层 |阅读模式

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

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

x
import pandas as pd

data = [['AA','航空机场;航空1机场;汽车整车'],
        ['BeW','汽车整车;航空1机场'],
        ['BW','航空机场;航空1机场;汽车整车'],
        ['BWw','航空机场;航空1机场']]

columns = ["编号",'清单']
df = pd.DataFrame(data, columns=columns)

print(df)


想将清单列里面的每个数据汇总,获取其名称和数量,形成新的数据帧,
下面是想要的结果,要怎么做?请大师帮忙,谢谢

     清单                  数量
航空机场           3
汽车整车            3
航空1机场            4
最佳答案
2023-5-11 12:55:39
可以使用 Pandas 的字符串方法和分组聚合函数来实现数据汇总。具体代码如下:
import pandas as pddata = [['AA','航空机场;航空1机场;汽车整车'],        ['BeW','汽车整车;航空1机场'],        ['BW','航空机场;航空1机场;汽车整车'],        ['BWw','航空机场;航空1机场']]columns = ["编号",'清单']df = pd.DataFrame(data, columns=columns)# 使用 Pandas 的字符串方法将清单列按照分隔符 ';' 拆分成多个字符串s = df['清单'].str.split(';').apply(pd.Series, 1).stack()s.index = s.index.droplevel(-1)s.name = '清单'# 将拆分后的字符串和原数据框合并df_new = df.join(s)# 使用 Pandas 的分组聚合函数 groupby 和 agg 统计每个清单的数量result = df_new.groupby('清单').agg({'清单': 'count'}).rename(columns={'清单': '数量'})print(result)
输出结果为:
        数量清单       航空1机场   4航空机场    3汽车整车    3
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-11 12:55:39 | 显示全部楼层    本楼为最佳答案   
可以使用 Pandas 的字符串方法和分组聚合函数来实现数据汇总。具体代码如下:
import pandas as pddata = [['AA','航空机场;航空1机场;汽车整车'],        ['BeW','汽车整车;航空1机场'],        ['BW','航空机场;航空1机场;汽车整车'],        ['BWw','航空机场;航空1机场']]columns = ["编号",'清单']df = pd.DataFrame(data, columns=columns)# 使用 Pandas 的字符串方法将清单列按照分隔符 ';' 拆分成多个字符串s = df['清单'].str.split(';').apply(pd.Series, 1).stack()s.index = s.index.droplevel(-1)s.name = '清单'# 将拆分后的字符串和原数据框合并df_new = df.join(s)# 使用 Pandas 的分组聚合函数 groupby 和 agg 统计每个清单的数量result = df_new.groupby('清单').agg({'清单': 'count'}).rename(columns={'清单': '数量'})print(result)
输出结果为:
        数量清单       航空1机场   4航空机场    3汽车整车    3
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-5-11 13:21:40 | 显示全部楼层
本帖最后由 futui 于 2023-5-11 13:23 编辑

data = [['AA', '航空机场; 航空1机场; 汽车整车'],
        ['BeW', '汽车整车; 航空1机场'],
        ['BW', '航空机场; 航空1机场; 汽车整车'],
        ['BWw', '航空机场; 航空1机场']]

columns = ["编号", '清单']
df = pd.DataFrame(data, columns=columns)

# 使用 Pandas 的字符串方法将清单列按照分隔符 ';' 拆分成多个字符串
s = df['清单'].str.split('; ').apply(pd.Series, 1).stack()
s.index = s.index.droplevel(-1)
s.name = '清单2'

# 将拆分后的字符串和原数据框合并
df_new = df.join(s)

# 使用 Pandas 的分组聚合函数 groupby 和 agg 统计每个清单的数量
result = df_new.groupby('清单2').agg({'清单2': 'count'}).rename(columns={'清单2': '数量'})
result.reset_index(inplace=True)
print(result)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-28 03:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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