Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.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_Pandas_Dataframe_Replace_Conditional Statements - Fatal编程技术网

Python 如何有条件地替换数据帧中的值?

Python 如何有条件地替换数据帧中的值?,python,pandas,dataframe,replace,conditional-statements,Python,Pandas,Dataframe,Replace,Conditional Statements,我有一个数据框架(Python3.7),我想有条件地替换列'XX'的一些值。我的数据框看起来像这样 XX Date Time 0 0 2016-05-01 19:00:00 1 1 2016-05-01 18:00:00 2 3 2016-05-01 17:00:00 3 -1 2016-05-01 16:00:00 4 5 2016-05-01 15:00:00 5 7 2016

我有一个数据框架(Python3.7),我想有条件地替换列'XX'的一些值。我的数据框看起来像这样

      XX        Date      Time
0      0  2016-05-01  19:00:00
1      1  2016-05-01  18:00:00
2      3  2016-05-01  17:00:00
3     -1  2016-05-01  16:00:00
4      5  2016-05-01  15:00:00
5      7  2016-05-01  14:00:00
6     -1  2016-05-01  13:00:00
7      6  2016-05-01  12:00:00
我的逻辑是,

if df.value ==-1 AND df.Time == '16:00:00':
    df.value = 2
但是,我有一个查找值字典来映射替换值

lookup_dict = {'01:00:00':1, '02:00:00':4 , ...., '23:00:00':0}
这是我希望达到的最终结果

      XX        Date      Time
0      0  2016-05-01  19:00:00
1      1  2016-05-01  18:00:00
2      3  2016-05-01  17:00:00
3      2  2016-05-01  16:00:00
4      5  2016-05-01  15:00:00
5      7  2016-05-01  14:00:00
6      1  2016-05-01  13:00:00
7      6  2016-05-01  12:00:00
仅用于通过以下方式过滤的值:

#added values for match
lookup_dict = {'13:00:00':1, '16:00:00':2, '23:00:00':0}

m = df['XX'] == -1
df.loc[m, 'XX'] = df.loc[m, 'Time'].map(lookup_dict)
print (df)
   XX        Date      Time
0   0  2016-05-01  19:00:00
1   1  2016-05-01  18:00:00
2   3  2016-05-01  17:00:00
3   2  2016-05-01  16:00:00
4   5  2016-05-01  15:00:00
5   7  2016-05-01  14:00:00
6   1  2016-05-01  13:00:00
7   6  2016-05-01  12:00:00