【发布时间】:2022-07-21 23:29:45
【问题描述】:
我有一个 pandas 数据框,它最初在下面有这些列,并随着程序的继续而增长。
'Branch_ID'、'Region'、'ActualRegion'、'Lease_Id'、'Year'、'Make'、 '型号'、'VIN'、'Plate_Number'、'Full_Name'、'员工编号'、'工作 Title'、'Device Serial Number'、'Blackout since'、'Covered'
目前我有多个与此类似的 groupby 语句。这个例子总结了最后一列中的所有内容,称为 Miles Driven
report = report.groupby(['Branch_ID', 'Region', 'ActualRegion', 'Lease_Id',
'Year', 'Make', 'Model', 'VIN',
'Plate_Number', 'Full_Name', 'Employee Number', 'Job Title',
'Device Serial Number', 'Blackout since', 'Covered']).sum().reset_index()
我必须多次执行类似的过程,每次执行时都会添加一个新列。我正在尝试创建一个可重用的函数来简化和消除冗余代码。
我尝试过的;在我的脑海中,上面的代码应该看起来像这样。如果其他列中有重复项,我将汇总一个名为 Miles Driven 的列
columns_to_group = report.columns.difference(['Miles Driven'])
report = report.groupby(columns_to_group).sum().reset_index()
这更优雅,将帮助我创建一个可以显着缩短我的代码的函数,但我尝试了很多方法来获得类似于工作的东西但不能。
上面我得到的错误是
raise ValueError("Grouper and axis must be same length")
如果我打印出 columns_to_group,它与我在上面的 groupby 语句中插入的内容相同。
【问题讨论】: