applymap() 不适用于 Pandas MultiIndex Slice
applymap() does not work on Pandas MultiIndex Slice
我有一个分层数据集:
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
。任何帮助将不胜感激。
您可以通过以下几种方式完成:
df['A'] = df['A'].applymap('{:.2f}'.format)
或(这将保留原始数据类型)
df['A'] = df['A'].round(2)
或作为字符串
df['A'] = df['A'].round(2).astype(str)
我有一个分层数据集:
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
。任何帮助将不胜感激。
您可以通过以下几种方式完成:
df['A'] = df['A'].applymap('{:.2f}'.format)
或(这将保留原始数据类型)
df['A'] = df['A'].round(2)
或作为字符串
df['A'] = df['A'].round(2).astype(str)