首页 > 解决方案 > 根据条件连接列的有效方法

问题描述

MRE:

dictionary = {'2018-10': 50, '2018-11': 76}
df = pd.DataFrame({
    "date":["2018-10", "2018-10", "2018-10", "2018-11","2018-11"]
})

看起来像(我有数百万行和多行):

      date
0   2018-10
1   2018-10
2   2018-10
3   2018-11
4   2018-11

根据日期,在字典中有与之相关的数字。我想将该关联的数字连接到日期列中(使用矢量化)。

所以我想要的数据框看起来像:

         date
0   2018-10 (50)
1   2018-10 (50)
2   2018-10 (50)
3   2018-11 (76)
4   2018-11 (76)

我的日期列具有数据类型字符串。

当前解决方案: 我可以使用 apply lambda:

 df["date"] = df["date"].apply(lambda row:row + f" ({dictionary[row]})")

但是我想知道是否有任何方法可以以矢量化方式进行,因为我有数百万行并且不想逐行进行。

编辑: 现在我想起来了,我认为不可能有矢量化的方式,因为根据日期我需要连接不同的数字。

标签: pythonpandas

解决方案


pd.Series.map可以取 adict作为映射,可以添加字符串和字符串列,所以其实很简单

df['date'] = df['date'] + ' (' + df['date'].map(dictionary).astype(str) + ')'

推荐阅读