数据汇总问题,求大师帮忙,谢谢
import pandas as pddata = [['AA','航空机场;航空1机场;汽车整车'],
['BeW','汽车整车;航空1机场'],
['BW','航空机场;航空1机场;汽车整车'],
['BWw','航空机场;航空1机场']]
columns = ["编号",'清单']
df = pd.DataFrame(data, columns=columns)
print(df)
想将清单列里面的每个数据汇总,获取其名称和数量,形成新的数据帧,
下面是想要的结果,要怎么做?请大师帮忙,谢谢
清单 数量
航空机场 3
汽车整车 3
航空1机场 4 可以使用 Pandas 的字符串方法和分组聚合函数来实现数据汇总。具体代码如下:
import pandas as pd
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 = '清单'
# 将拆分后的字符串和原数据框合并
df_new = df.join(s)
# 使用 Pandas 的分组聚合函数 groupby 和 agg 统计每个清单的数量
result = df_new.groupby('清单').agg({'清单': 'count'}).rename(columns={'清单': '数量'})
print(result)
输出结果为:
数量
清单
航空1机场 4
航空机场 3
汽车整车 3
本帖最后由 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)
页:
[1]