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列中(使用矢量化)。
所以我想要的dataframe看起来如下:
date
0 2018-10 (50)
1 2018-10 (50)
2 2018-10 (50)
3 2018-11 (76)
4 2018-11 (76)我的日期列有数据类型字符串。
当前解决方案:I可以使用apply lambda:
df["date"] = df["date"].apply(lambda row:row + f" ({dictionary[row]})")但是,我想知道是否有任何方法可以将其矢量化,因为我有数百万行,并且不想逐行进行。
编辑:现在我想到了,我不认为有一种向量化的方法,因为根据日期,我需要连接不同的数字。
发布于 2020-03-19 01:51:39
pd.Series.map可以使用一个dict作为映射,可以添加字符串和字符串列,因此它实际上就像
df['date'] = df['date'] + ' (' + df['date'].map(dictionary).astype(str) + ')'发布于 2020-03-19 01:38:47
所以我并不是百分之百地认为这是最快的方法,但这是相当简单的。
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])产生的结果:
date data
0 2018-10 50
1 2018-10 50
2 2018-10 50
3 2018-11 76
4 2018-11 76对于df.date.apply(lambda x: data[x]),您也可以使用
df.apply(lambda x: data[x['date']],axis=1)我相信这也会有类似的效果,但它的可读性很低。
https://stackoverflow.com/questions/60749614
复制相似问题