Python 根据条件确定混凝土柱的有效方法

Python 根据条件确定混凝土柱的有效方法,python,pandas,Python,Pandas,MRE: 这看起来像(我有数百万行和多行): 根据日期的不同,字典中有与其关联的编号。我想将关联的数字连接到日期列中(使用矢量化) 因此,我所需的数据帧如下所示: date 0 2018-10 1 2018-10 2 2018-10 3 2018-11 4 2018-11 “我的日期”列具有数据类型字符串 当前解决方案: 我可以申请lambda: date 0 2018-10 (50) 1 2018-10 (50) 2 2018-1

MRE:

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

根据日期的不同,字典中有与其关联的编号。我想将关联的数字连接到日期列中(使用矢量化)

因此,我所需的数据帧如下所示:

      date
0   2018-10
1   2018-10
2   2018-10
3   2018-11
4   2018-11
“我的日期”列具有数据类型字符串

当前解决方案: 我可以申请lambda:

         date
0   2018-10 (50)
1   2018-10 (50)
2   2018-10 (50)
3   2018-11 (76)
4   2018-11 (76)
然而,我想知道是否有任何方法来做它矢量化的方式,因为我有数百万行,不想去逐行

编辑:
现在我想起来了,我不认为有矢量化的方法,因为根据日期,我需要计算不同的数字。

所以我不是100%认为这是最快的方法,但它相当简单

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

data = {'2018-10': 50, '2018-11': 76}
df = pd.DataFrame({
    "date":["2018-10", "2018-10", "2018-10", "2018-11","2018-11"]
})
df["data"] = df.date.apply(lambda x: data[x])
除了
df.date.apply(lambda x:data[x])之外,您还可以使用

      date  data
0  2018-10    50
1  2018-10    50
2  2018-10    50
3  2018-11    76
4  2018-11    76
我认为它的性能类似,但在我看来可读性较差。

可以使用
dict
作为映射,并且可以添加字符串和字符串列,因此实际上非常简单

df.apply(lambda x: data[x['date']],axis=1)

确实有
pandas.Series.apply
pandas.Series.map
方法。也许这些就是你要找的?我认为您的最后一段代码实际上是工作代码。您试过了吗?最后一个代码正在运行,但我想知道是否有使用矢量化然后合并两列的方法?您不需要合并任何内容,因为您正在将结果分配给列
data
。我希望日期列中包含数字。
df[“date”]=df.date.apply(lambda x:x+“({})”格式(数据[x]))
但是为什么呢?这就是我在上面所做的,但是我想使用矢量化。谢谢,我刚刚意识到没有一种方法可以用矢量化的方式来实现这一点。这将比应用更有效。为什么这比应用更有效?
df.apply(lambda x: data[x['date']],axis=1)
df['date'] = df['date'] + ' (' + df['date'].map(dictionary).astype(str) + ')'