我真的很喜欢pandas.assign()
函数,尤其是与lambda
表达式结合使用。但是,在处理我不了解的字符串连接时,遇到了未知行为。我已经找到了这个线程,但是没有回答我的问题:String concatenation of two pandas columns
我的问题的最小工作示例:
import pandas as pd
df = pd.DataFrame({'Firstname': ['Sandy', 'Peter', 'Dolly'],
'Surname': ['Sunshine', 'Parker', 'Dumb']})
返回]
Firstname Surname 0 Sandy Sunshine 1 Peter Parker 2 Dolly Dumb
现在,如果我想分配例如
Full Name
我以为我可以做到:
行创建一个字符串:df = df.assign(**{'Full Name': lambda x: f'{x.Firstname} {x.Surname}'})
但是,这不仅会像预期的那样基于each]行创建一个新字符串,如“ Sandy Sunshine”,而且还会像这样基于all
谁能解释我为什么我的方法不起作用以及为什么这样
df = df.assign(**{'Full Name': lambda x: x.Firstname + ' ' + x.Surname})
显然有效吗?谢谢:)
我真的很喜欢pandas.assign()函数,尤其是与lambda表达式结合使用时。但是,在处理我不理解的字符串连接时,我遇到了未知的行为...
在熊猫f-string
中,元素用于组合字符串,因为不存在针对数组实现的解决方案。
因此,在您的解决方案中将所有Series
合并(df中的列)。
df.assign(**{'Full Name': lambda x: f'{x.Firstname} {x.Surname}'})