我不熟悉使用Python和Pandas,但一直在尝试为我的报告自动化一些数据清理/合并。 到目前为止,我已经成功地建立了所有信息的组合文件,我需要将这些信息输入到我的报告摘要中,但是 无法使用匹配的前缀对数据进行分组和合并
我有一个数据集,其结构与pandas dataframe中的类似:
Company_Num Company_Name 2019_Amt 2020_Amt Code Flag Manager
1 ABC Company Ltd 2000 400 A Y John
1 ABC Company Ltd 2000 400 A Y John
2 DEFGHIJ Company (London) 480 100 B N James
3 DEFGHIJ Company (Bristol) 600 700 B N James
4 DEFGHIJ Company (York) 1500 1000 B N James
5 KLM Services 9000 7000 A Y Jane
6 NOPQ Industries 300 400 C Y Jen
7 NOPQ Industries - London 7000 8000 C Y Jen
我想得到一组数据摘要,其中数据和数据中没有重复项 我没有为每个办公室设置行,而是为每个公司设置一个汇总值。最终 使用数据帧,如:
Company_Name 2019_Amt 2020_Amt Code Flag
ABC Company Ltd 2000 400 A Y
DEFGHIJ Company 2580 1800 B N
KLM Services 9000 7000 A Y
NOPQ Industries 7300 8400 C Y
到目前为止,我已使用以下方法成功删除了重复项:
df.drop_duplicates(subset=['Company_Num', 'Company_Name', 'Code', '2019_Amt', '2020_Amt'])
使用生成的表:
Company_Num Company_Name 2019_Amt 2020_Amt Code Flag Manager
1 ABC Company Ltd 2000 400 A Y John
2 DEFGHIJ Company (London) 480 100 B N James
3 DEFGHIJ Company (Bristol) 600 700 B N James
4 DEFGHIJ Company (York) 1500 1000 B N James
5 KLM Services 9000 7000 A Y Jane
6 NOPQ Industries 300 400 C Y Jen
7 NOPQ Industries - London 7000 8000 C Y Jen
我尝试过的解决方案是对每个公司名称的前9个字符进行子串,并使用groupby 然后求和,但这就剩下了作为子字符串保存的列。这也降低了成本 数据框中的列代码和标记,留给我的表如下:
df['SubString_Company_Name'] = df['Company_Name'].str.slice(0,9)
df.groupby([df.SubString_Company_Name]).sum().reset_index()
SubString_Company_Name 2019_Amt 2020_Amt
ABC Compa 2000 400
DEFGHIJ C 2580 1800
KLM Servi 9000 7000
NOPQ Indu 7300 8400
我曾尝试使用os.path.commonprefix函数获取公司名称,但找不到在数据帧中使用它的方法, 对于多个值。我的理解是,它将作为一个整体查看列表,并返回列表中最长的公共前缀 整个列表都不起作用。我还考虑将所有重复的子字符串提取到新的数据帧中并求和 并在合并回一个数据集之前重命名,但我不确定这是否有效。我在网上找到的解决方案 以统一数据为中心,其中lambda可以与分隔符一起使用,或者前缀的大小始终相同,而 我的数据不统一,前缀大小不一
我的数据每个月都会更改,因此我想设计一个不依赖子字符串的动态解决方案,因为我可能会遇到 只有9个字符的问题。我最后要考虑的是提取子字符串\u Company\u Name 在列表中,将其转换为公司名称的os.path.commonprefix,然后保存每个名称的唯一commonprefix值 将公司名称添加到新列表中,并为该列表中的每个项目创建一个新的汇总表。但我不知道这是否有效 在尝试之前,我想知道是否有更好或更有效的方法
您可以在删除重复项后使用^{} ,并将^{} 与拆分
.str[0]
中的第一个字符串一起用作grouper:相关问题 更多 >
编程相关推荐