将字典与数据框匹配

时间:2021-04-08 20:42:20

标签: python pandas dataframe dictionary

假设我们有一个这样的字典:dic = {"2019-01" : "0.3", "2019-02": "0.4", "2019-03": "0.5"}

和这样的数据框:

    ID     Date    Volume      Sales
0   1   2019-01  3.333333    1.333333
1   1   2019-01  3.333333    1.333333
2   1   2019-01  3.333333    1.333333
3   1   2019-02  2.666667    2.000000
4   1   2019-02  2.666667    2.000000
5   1   2019-02  2.666667    2.000000
6   1   2019-03  2.000000    2.666667
7   1   2019-03  2.000000    2.666667
8   1   2019-03  2.000000    2.666667
9   2   2019-01  1.333333    3.333333
10  2   2019-01  1.333333    3.333333
11  2   2019-01  1.333333    3.333333

有没有办法创建一个将字典与数据框“日期”列相匹配的列

输出看起来像:

 ID     Date    Volume  Sales    dic
0   1   2019-01  3.333   1.333   0.3
1   1   2019-01  3.333   1.333   0.3
2   1   2019-01  3.333   1.333   0.3
3   1   2019-02  2.667   2.000   0.4
4   1   2019-02  2.667   2.000   0.4
5   1   2019-02  2.667   2.000   0.4
6   1   2019-03  2.000   2.667   0.5
7   1   2019-03  2.000   2.667   0.5
8   1   2019-03  2.000   2.667   0.5
9   2   2019-01  1.333   3.333   0.3
10  2   2019-01  1.333   3.333   0.3
11  2   2019-01  1.333   3.333   0.3

1 个答案:

答案 0 :(得分:3)

使用.map()

dic = {"2019-01": "0.3", "2019-02": "0.4", "2019-03": "0.5"}
df["dic"] = df["Date"].map(dic)
print(df)

打印:

    ID     Date    Volume     Sales  dic
0    1  2019-01  3.333333  1.333333  0.3
1    1  2019-01  3.333333  1.333333  0.3
2    1  2019-01  3.333333  1.333333  0.3
3    1  2019-02  2.666667  2.000000  0.4
4    1  2019-02  2.666667  2.000000  0.4
5    1  2019-02  2.666667  2.000000  0.4
6    1  2019-03  2.000000  2.666667  0.5
7    1  2019-03  2.000000  2.666667  0.5
8    1  2019-03  2.000000  2.666667  0.5
9    2  2019-01  1.333333  3.333333  0.3
10   2  2019-01  1.333333  3.333333  0.3
11   2  2019-01  1.333333  3.333333  0.3