applymap()不适用于Pandas MultiIndex Slice

时间:2017-03-10 23:53:42

标签: python pandas multi-index

我有一个分层数据集:

df = pd.DataFrame(np.random.rand(6,6),
              columns=[['A','A','A','B','B','B'],
                       ['mean', 'max', 'avg']*2],
              index=pd.date_range('20000103', periods=6))

我想将一个函数应用于列A下的所有值。我可以将值设置为:

df.loc[slice(None), 'A'] = 1

够容易。现在,如果我想将映射应用于此MultiIndex切片,而不是分配值,则它不起作用。

例如,让我应用一个简单的格式化语句:

df.loc[slice(None), 'A'].applymap('{:.2f}'.format)

此步骤正常。但是,我无法将其分配给原始df:

df.loc[slice(None), 'A'] = df.loc[slice(None), 'A'].applymap('{:.2f}'.format)

一切都变成NaN。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

您可以通过以下几种方式实现:

import utilities.util

或(这将保留原始dtype)

df['A'] = df['A'].applymap('{:.2f}'.format)

或作为字符串

df['A'] = df['A'].round(2)