我有一个像这样的数据框:
Date Value
19990506 0.6
19990506 0.8
19990607 1.2
20000802 0.4
我也有两个这样的列表:
list1 = ['19990506', '19990607', '20000802']
list2 = ['1999201', '1999232', '2000252']
list1
中的项目与Date
列中的值一致,我想将其替换为list2
中的项目。因此,Date
19990506
替换为1999201
,19990607
替换为1999232
。我想我需要压缩我的列表才能做到这一点,但在那之后,我对最好的方法感到茫然。我正在展示一个非常简化的数据框,所以简单地使用.replace
对我来说效率不高。我想要的输出是:
Date Value
1999201 0.6
1999201 0.8
1999232 1.2
2000252 0.4
答案 0 :(得分:4)
如果您创建的地图从list1
映射到list2
,那么您可以使用Series.map
:
df = pd.read_clipboard()
list1 = ['19990506', '19990607', '20000802']
list2 = ['1999201', '1999232', '2000252']
# When I read in your data I get ints in the Date column
# so I need ints in the replacement map, if you have
# strings then remove the int() conversions
replacement_map = {int(i1): int(i2) for i1, i2 in zip(list1, list2)}
df['Date'] = df['Date'].map(replacement_map)
df
Out[13]:
Date Value
0 1999201 0.6
1 1999201 0.8
2 1999232 1.2
3 2000252 0.4