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 方式。
我想知道是否有单行程序可以做到这一点。
如果要使用模板,则必须在 apply
或 map
中循环,例如:
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.?
我有一个 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 方式。
我想知道是否有单行程序可以做到这一点。
如果要使用模板,则必须在 apply
或 map
中循环,例如:
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.?