Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 熊猫:使用字典替换一列中与另一列中的条件匹配的单元格中的值_Python_Python 3.x_Pandas_Dictionary_Dataframe - Fatal编程技术网

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)