使用 Pandas 连接两个或多个变量以创建新变量
Posted
技术标签:
【中文标题】使用 Pandas 连接两个或多个变量以创建新变量【英文标题】:Concatenate two or more variables using Pandas to create a new variable 【发布时间】:2014-12-07 02:03:07 【问题描述】:输入数据集:
Var1 Var2 Var3 Var4
101 XXX yyyy 12/10/2014
101 XYZ YTRT 13/10/2014
102 TTY UUUU 9/9/2014
102 YTY IUYY 10/10/2014
预期数据集:
Var1 Var2 Var3 Var4 New_Variable
101 XXX yyyy 12/10/2014 XXX, yyyy
101 XYZ YTRT 13/10/2014 XYZ, YTRT
102 TTY UUUU 9/9/2014 TTY, UUUU
102 YTY IUYY 10/10/2014 YTY, IUYY
如何连接两个或多个字符串变量并创建一个新变量来捕获同一数据集中的连接值?
【问题讨论】:
【参考方案1】:您可以使用cat
方法。
这是一个例子:
>>> df = pd.DataFrame('a':['x','y','z'], 'b': ['x','y','z'], 'c': ['x','y','z'])
>>> df
a b c
0 x x x
1 y y y
2 z z z
现在您可以使用cat
方法在您选择的一个列上创建一个新列。使用others
参数指定您想要连接的其他列,并使用sep
参数指定您的分隔符:
>>> df["new"] = df.a.str.cat(others=[df.b, df.c], sep=', ')
>>> df
a b c new
0 x x x x, x, x
1 y y y y, y, y
2 z z z z, z, z
【讨论】:
感谢您的帮助。我在使用 cat 功能时遇到以下错误,您能帮帮我吗?文件“C:\Python27\lib\site-packages\pandas\core\strings.py”,第 86 行,在 _length_check 中引发 ValueError('All arrays must be same length') ValueError: All arrays must be same length @user3738411 完全没问题。该错误表明您尝试连接的列的长度并不完全相同(它们需要使用cat
)。你觉得这可能吗?
你能指导我吗?一种改变现有变量长度的方法
@user3738411 如果列来自同一个 DataFrame,它们应该是相同的长度(即相同的行数)。对于您问题中的示例,df.Var2.str.cat(others=[df.Var3], sep=', ')
应该可以正常工作。以上是关于使用 Pandas 连接两个或多个变量以创建新变量的主要内容,如果未能解决你的问题,请参考以下文章
如何使用for循环或条件在pandas数据框的子集中创建多个回归模型(statsmodel)?
pandas将初始dataframe基于分组变量拆分为多个新的dataframe使用groupby函数tuple函数dict函数(splitting dataframe multiple)
Python Pandas 使用 pd.qcut 创建新的 bin/bucket 变量