使用 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 变量

使用 groupby 循环遍历 pandas 中的多个变量组合

SSH连接时发送/设置环境变量