根据其他两列的值在 Pandas 中创建一个新列[重复]

Posted

技术标签:

【中文标题】根据其他两列的值在 Pandas 中创建一个新列[重复]【英文标题】:Creating a new column in Pandas based on the values of two other columns [duplicate] 【发布时间】:2021-03-19 07:04:17 【问题描述】:

我想根据其他两列的值在 Pandas 数据集中创建一个新列。

+-----------+----------+
| Column_1  | Column_2 |
+-----------+----------+
| a         | c        |
+-----------+----------+
| b         | d        |
+-----------+----------+

现在,new_column 应该如下所示:

+-----------+----------+------------+
| Column_1  | Column_2 | new_column |
+-----------+----------+------------+
| a         | c        | a,c        |
+-----------+----------+------------+
| b         | d        | b,d        |
+-----------+----------+------------+

有什么帮助吗?

【问题讨论】:

【参考方案1】:

您可以在应用 concat 时创建一个辅助数据框 (df_new),以便将统一列与生成的 index 列一起取消透视。然后按新的index列分组后使用apply(lambda x: ','.join(x)),如

import pandas as pd

fields = 'Column_1': ['a','b'],
          'Column_2': ['c','d']
          

df=pd.DataFrame(fields)
df_new = pd.concat([df[i] for i in df.columns]).reset_index()
df['new_column']=df_new.groupby(['index'])[0].apply(lambda x: ','.join(x)).reset_index()[0]

【讨论】:

我认为不需要groupby【参考方案2】:

我用过这个,效果很好:

df['new_column'] = df['Column_1']+ ' , ' +df['Column_2']

【讨论】:

如果您有两个以上的列,例如 'Column_3': ['d','e'] 怎么办。我的意思是你也需要明确添加' , ' +df['Column_3']。例如。将为每一列产生编码。

以上是关于根据其他两列的值在 Pandas 中创建一个新列[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Python pandas - 如果项目在列表中,则为新列的值

Pandas Dataframe to pivot table - 根据前两列的添加创建新列

使用来自多列的值创建单列

根据其他列的值在多索引数据框中创建新列的简单方法

使用正则表达式根据列的值在数据集中创建新列

迭代数据框并根据一列的值在具有前一行值的新列中执行操作