将值从系列映射到数据帧中的所有元素

时间:2016-02-17 23:24:46

标签: python pandas

我有类似以下数据框的内容:

import pandas as pd
import numpy as np

df = pd.DataFrame()
df['ID1'] = [0, 1, 4, 6, 7]
df['ID2'] = [6, 2, 3, 4, np.nan]
df['ID3'] = [np.nan, np.nan, 7, np.nan, np.nan]
>>> df
   ID1  ID2  ID3
0    0    6  NaN
1    1    2  NaN
2    4    3    7
3    6    4  NaN
4    7  NaN  NaN

以下一组键:

keys = pd.Series(['Orange', 'Blue', 'Purple', 'Red', 'Green', 'Pink', 'Brown', 'Black'],
                 name='ID')
>>> keys
0    Orange
1      Blue
2    Purple
3       Red
4     Green
5      Pink
6     Brown
7     Black
Name: ID, dtype: object

我想用适当的密钥替换数据框中的每个元素。我可以使用'map function'逐列完成此列:

>>> df['ID1'].map(keys)
0    Orange
1      Blue
2     Green
3     Brown
4     Black
Name: ID1, dtype: object

但是,如何立即对整个数据框执行此操作?我认为这是“applymap”会出现的地方,但我似乎错误地使用它,因为当我尝试df.applymap(keys)时收到错误消息。

关于我如何做到这一点的任何建议?

1 个答案:

答案 0 :(得分:1)

这是apply函数与>>> df.apply(lambda col: col.map(keys)) ID1 ID2 ID3 0 Orange Brown NaN 1 Blue Purple NaN 2 Green Red Black 3 Brown Green NaN 4 Black NaN NaN 的良好用例,您可以在其中映射数据框中的每一列。

VERSION BUILD=8961227 RECORDER=FX
SET !TIMEOUT 1
SET !ERRORIGNORE YES
TAB T=1
URL GOTO=url
SEARCH SOURCE=REGEXP:"raspuns":\[\"(.[^"]*)" EXTRACT=$1
SET !VAR0 raspuns
SET !VAR1 {{!EXTRACT}}
SET !EXTRACT NULL
SET !VAR2 EVAL("('{{!VAR0}}' == '{{!VAR1}}') ? 1 : 0;")  
TAB T=2
URL GOTO=url
TAG POS={{!VAR2}} TYPE=TEXTAREA ATTR=AUTOCOMPLETE:off CONTENT={{!EXTRACT}}
TAG POS={{!VAR2}} TYPE=BUTTON ATTR=CLICK:sendMessage()&&CLASS:go&&TXT: