Python 熊猫:使用字典替换一列中与另一列中的条件匹配的单元格中的值
以以下示例数据帧为例:Python 熊猫:使用字典替换一列中与另一列中的条件匹配的单元格中的值,python,python-3.x,pandas,dictionary,dataframe,Python,Python 3.x,Pandas,Dictionary,Dataframe,以以下示例数据帧为例: df = pd.DataFrame([['00100', 'Alpha', None], ['00100', 'Beta', None], ['05300', 'Theta', None], ['95687', 'Gamma', None], ['05300', 'Sigma', None]]) 看起来像
df = pd.DataFrame([['00100', 'Alpha', None],
['00100', 'Beta', None],
['05300', 'Theta', None],
['95687', 'Gamma', None],
['05300', 'Sigma', None]])
看起来像
0 1 2
0 00100 Alpha None
1 00100 Beta None
2 05300 Theta None
3 95687 Gamma None
4 05300 Sigma None
我有一个字典,它根据列0映射列2的值:
match = {
'00100' : '09010',
'05300' : '09004'
}
我想根据第0列中的值更改第2列中的值。将dict与数据帧匹配后,我期望的最终结果是:
0 1 2
0 00100 Alpha 09010
1 00100 Beta 09010
2 05300 Theta None
3 95687 Gamma 09004
4 05300 Sigma 09004
起初,我认为我可以通过以下方式使用.loc创建.apply函数或for循环:
df.loc[df[0] == match[key]][2] = match[value]
但这引发了一个例外:
"A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead"
我似乎不明白如何申请这个特殊的案子
我正在使用:
Python 3.6.1
熊猫0.20.1试试这个<代码>pd.Series.map采用
试试这个<代码>pd.Series.map采用
这里有一个可能的解决方案:
df[2] = df[0].apply(lambda x: match[x] if x in match else None)
这里有一个可能的解决方案:
df[2] = df[0].apply(lambda x: match[x] if x in match else None)