Python 如何有条件地替换数据帧中的值?
我有一个数据框架(Python3.7),我想有条件地替换列'XX'的一些值。我的数据框看起来像这样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
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