根据列表替换列中的项目

时间:2016-04-19 02:59:46

标签: python pandas

我有一个像这样的数据框:

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替换为199920119990607替换为1999232。我想我需要压缩我的列表才能做到这一点,但在那之后,我对最好的方法感到茫然。我正在展示一个非常简化的数据框,所以简单地使用.replace对我来说效率不高。我想要的输出是:

Date      Value
1999201   0.6
1999201   0.8
1999232   1.2
2000252   0.4

1 个答案:

答案 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