加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 使用pandas对csv进行排序和分组

发布时间:2020-12-20 11:57:10 所属栏目:Python 来源:网络整理
导读:我导入一个包含以下内容的CSV文件: Id; PartNrInt; Some; other; stuff;R1; 1234-5678; x1; y1; z1;R2; 1234-6789; x2; y2; z2;R3; 1234-5678; x3; y3; z3; 然后我有一个数据库,其中包含每个PartNrInt的附加数据.我合并了这两个数据帧,所以我有这样的事情:
我导入一个包含以下内容的CSV文件:

Id; PartNrInt; Some; other; stuff;
R1; 1234-5678; x1; y1; z1;
R2; 1234-6789; x2; y2; z2;
R3; 1234-5678; x3; y3; z3;

然后我有一个数据库,其中包含每个PartNrInt的附加数据.我合并了这两个数据帧,所以我有这样的事情:

Id; PartNrInt; OrderNr; Manufacturer; Some; other; stuff;
R1; 1234-5678; OrderNr1; Manuf1; x1; y1; z1;
R2; 1234-6789; OrderNr2: Manuf2; x2; y2; z2;
R3; 1234-5678; OrderNr1: Manuf1; x3; y3; z3;

这部分工作正常,我可以轻松打印数据帧.要在我们的ERP系统中导入文件,我必须按PartNrInt对表进行分组.
所以我想要一张像这样的桌子:

Count; Names; PartNrInt; OrderNr; Manufacturer
2; R1,R3; 1234-5678; OrderNr1; Manuf1
1; R2; 1234-6789; OrderNr1; Manuf1

我的问题是,我可以将数据与df.groupby(‘PartNrInt’)[‘Id’]进行分组.应用(列表)并计算对象,但我无法在新帧中获取新数据以进行导出.
我对熊猫和Python都是新手,所以也许有一个非常简单的解决方案.

解决方法

您可以使用 groupbyaggregate join和len,last reset_index并重新排序列:

df = df.groupby(['PartNrInt','OrderNr','Manufacturer']).Id 
       .agg({"Names": ','.join,'Count': len}) 
       .reset_index()[['Count','Names','PartNrInt','Manufacturer']]
print (df)

   Count  Names  PartNrInt   OrderNr Manufacturer
0      2  R1,R3  1234-5678  OrderNr1       Manuf1
1      1     R2  1234-6789  OrderNr2       Manuf2

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读