我有一个数据框,我想替换一列中的值,但是描述替换的字典基于另一列中的值。一个示例数据框如下所示:
Map me strings date
0 1 test1 2020-01-01
1 2 test2 2020-02-10
2 3 test3 2020-01-01
3 4 test2 2020-03-15
我有一本字典,看起来像这样:
map_dict = {'2020-01-01': {1: 4, 2: 3, 3: 1, 4: 2},
'2020-02-10': {1: 3, 2: 4, 3: 1, 4: 2},
'2020-03-15': {1: 3, 2: 2, 3: 1, 4: 4}}
我希望映射逻辑根据日期而有所不同。
在此示例中,预期输出为:
Map me strings date
0 4 test1 2020-01-01
1 4 test2 2020-02-10
2 1 test3 2020-01-01
3 4 test2 2020-03-15
我有一个庞大的数据框(超过1亿行),因此我真的想尽可能避免使用任何循环解决方案。
我尝试过考虑使用map或replace的方法,但未成功
DataFrame.join
与cosntructor和MultiIndex Series
创建的配合使用:DataFrame
DataFrame.stack
df = df.join(pd.DataFrame(map_dict).stack().rename('new'), on=['Map me','date'])
print (df)
Map me strings date new
0 1 test1 2020-01-01 4
1 2 test2 2020-02-10 4
2 3 test3 2020-01-01 1
3 4 test2 2020-03-15 4
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句