我导入一个包含以下内容的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都是新手,所以也许有一个非常简单的解决方案.
解决方法
您可以使用
groupby
与
aggregate
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