python - 根据条件连接列的有效方法
问题描述
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]})")
但是我想知道是否有任何方法可以以矢量化方式进行,因为我有数百万行并且不想逐行进行。
编辑: 现在我想起来了,我认为不可能有矢量化的方式,因为根据日期我需要连接不同的数字。
解决方案
pd.Series.map
可以取 adict
作为映射,可以添加字符串和字符串列,所以其实很简单
df['date'] = df['date'] + ' (' + df['date'].map(dictionary).astype(str) + ')'