带有str列的熊猫分配

问题描述 投票:1回答:1

我真的很喜欢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表达式结合使用时。但是,在处理我不理解的字符串连接时,我遇到了未知的行为...

python pandas dataframe lambda assign
1个回答
0
投票

在熊猫f-string中,元素用于组合字符串,因为不存在针对数组实现的解决方案。

因此,在您的解决方案中将所有Series合并(df中的列)。


0
投票
df.assign(**{'Full Name': lambda x: f'{x.Firstname} {x.Surname}'})
© www.soinside.com 2019 - 2024. All rights reserved.