pandas 列中批量更改的一个衬垫

One liner for batch changes in pandas column

我有一个 pandas 数据框,有 10 列和数千行。 第一列为网站用户名称,例如:

  Name ...
0 Alex
1 Fred
2 John
3 Chloe
...

我想将第一列更改为:

  Name ...
0 Hi! Alex, mind calling me at 8 p.m.?
1 Hi! Fred, mind calling me at 8 p.m.?
2 Hi! John, mind calling me at 8 p.m.?
3 Hi! Chloe, mind calling me at 8 p.m.?
...

在这里,数字8将是自由输入。

简而言之,目标字符串模板可能是:"Hi! {}, mind calling me at {} p.m.?" - 第一个占位符将是相应单元格中的单词,第二个占位符用于输入数字。

我想遍历所有行并手动更改字符串,但这看起来很糟糕,而且不是 pythonian 方式。

我想知道是否有单行程序可以做到这一点。

如果要使用模板,则必须在 applymap 中循环,例如:

y = 8
df['Name'] = df['Name'].apply(lambda x: f"Hi! {x}, mind calling me at {y} p.m.?")
#alternative
#df['Name'] = df['Name'].map(lambda x: f"Hi! {x}, mind calling me at {y} p.m.?")
print (df)
                                    Name
0   Hi! Alex, mind calling me at 8 p.m.?
1   Hi! Fred, mind calling me at 8 p.m.?
2   Hi! John, mind calling me at 8 p.m.?
3  Hi! Chloe, mind calling me at 8 p.m.?

没有apply备选方案:

y = 8
df['Name'] = "Hi! " + df['Name'] + ", mind calling me at " + str(y) + "p.m.?"
print (df)
                                   Name
0   Hi! Alex, mind calling me at 8p.m.?
1   Hi! Fred, mind calling me at 8p.m.?
2   Hi! John, mind calling me at 8p.m.?
3  Hi! Chloe, mind calling me at 8p.m.?