我对Python相当陌生,我希望有人能在组织类型的数据方面帮助我。我有一个公司组织表(org_table),看起来像这样,注意组织级别中的某个地方可能有null,但最高和最低级别永远不会为null
Super Division | Division | Super Department | Department | Sub Department |
---|---|---|---|---|
123 | 342 | 767 | 546 | 965 |
345 | 453 | 234 | na | 759 |
我还有一个表,其中包含与组织相关联的“报告”(report_table),可以是任何级别的。所以它看起来像这样
Report Name | Org Level | Org ID |
---|---|---|
ABC | Division | 342 |
DEF | Super Department | 234 |
GHI | Super Division | 123 |
我想得到一个结果集,其中包含相同的报告列表,但现在已汇总到最高级别。这样的事情。我该如何做到这一点?
Report Name | Org Level | Org ID |
---|---|---|
ABC | Division | 342 |
ABC | Super Division | 123 |
DEF | Super Department | 234 |
DEF | Division | 453 |
DEF | Super Division | 345 |
GHI | Super Division | 123 |
我曾尝试编写一个检索汇总的函数,但结果集也为我提供了所有较低的级别。
` def get_org_rollup(row):
org_level = row[ Org Level ]
org_rollups = []
for i, level in enumerate(org_table.columns):
if level == org_level:
org_rollups.append(row[ Org ID ])
elif not pd.isnull(org_table.iloc[row.name, i]):
org_rollups.append(org_table.iloc[row.name, i])
else:
break
return pd.Series(org_rollups, index=org_table.columns[:len(org_rollups)])`