如标题所示,我想要能够进行以下操作(最好通过一些代码来解释)[pandas 0.20.1
是必需的]
import pandas as pd
import numpy as np
a = pd.DataFrame(np.random.rand(10, 4), columns=[['a','a','b','b'], ['alfa','beta','alfa','beta',]])
def as_is(x):
return x
def power_2(x):
return x**2
# desired result
a.transform([as_is, power_2])
问题在于函数可能比这个更复杂,因此我会失去“命名”的功能,因为 pandas.DataFrame.transform
只允许传递列表,而字典是最方便的选择。
回归基础,我得到了下面这个:
dict_funct= {'as_is': as_is, 'power_2': power_2}
def wrapper(x):
return pd.concat({k: x.apply(v) for k,v in dict_funct.items()}, axis=1)
a.groupby(level=[0,1], axis=1).apply(wrapper)
但输出的数据框中所有列都是 nan
,可能是由于多重索引列的排序。有什么方法可以解决这个问题吗?