我有类似以下数据框的内容:
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)
时收到错误消息。
关于我如何做到这一点的任何建议?
答案 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: