我有一个数据框。
df = ...
gb = df.groupby(['A','B','C'],axis=0)
new_df = gb.agg(['sum','max'])
def func(expected_list: List[str]):
...
# fails if a list of strings is not passed
func(list(new_df.columns))
事情失败了。
new_df.columns yields: [ ('A','max'), ('A','sum'), ('B','max'), ... ]
如何将汇总的groupby调用转换为一个数据列,该数据框按预期返回一个列Series和一个对列的调用,而不是此tuple-拟张量?
答案 0 :(得分:0)
因此,事实证明,返回的索引是称为MultiIndex
的另一种类型,使得返回的agg
的类型不是DataFrame(Index)
而是伪造的DataFrame(MultiIndex)
-code,然后您可以通过以下过程为所有下游代码返回Dataframe(Index)
,该行为具有DataFrame
输出的read_csv
的预期行为:
result.columns = [re.sub(r'_$','',-'_'.join(col)) for col in result.columns]