当前位置: 首页 > 知识库问答 >
问题:

基于其他两列的值在Pandas中创建新列[duplicate]

哈骞仕
2023-03-14

我想在Pandas数据集中创建一个新列,基于另外两个列的值。

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

现在,new\u列应该如下所示:

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

有什么帮助吗?

共有2个答案

公孙智
2023-03-14

您可以在应用concat的同时创建一个辅助数据框(df_new),以便取消生成的索引列以及统一列。然后使用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]
班安平
2023-03-14

我用了这个,它工作得很好:

df['new_column'] = df['Column_1']+ ' , ' +df['Column_2']
 类似资料:
  • 我想将我的自定义函数(它使用if-else梯形)应用到数据帧每行中的这六列(,,,,,)。 我已经尝试了不同的方法从其他问题,但似乎仍然不能找到正确的答案,我的问题。关键的一点是,如果这个人被算作西班牙裔,他们就不能算作其他任何东西。即使他们在另一个种族栏中有一个“1”,他们仍然被算作西班牙裔,而不是两个或两个以上的种族。类似地,如果所有ERI列的总和大于1,则被计为两个或两个以上的种族,不能被计

  • 我有一个pandas dataframe,需要根据dataframe中其他列的值创建新列。这是数据帧 人城市国家国家 美国伊利诺伊州芝加哥 美国亚利桑那州凤凰城B酒店 C美国加利福尼亚州圣地亚哥 我想根据state中的值创建两个新列 创建新列df[“城北”]=df[“城市”]其中state=“伊利诺伊” 创建新列df[“城市南部”]=df[“城市”],其中州不等于“伊利诺伊州” 我试过了 但是不等

  • 我正在使用pyspark下面是我的数据

  • 我有两个熊猫数据框 步骤2:对于flag=1的行,AA_new将计算为var1(来自df2)*组“A”和val“AA”的df1的'cal1'值*组“A”和val“AA”的df1的'cal2'值,类似地,AB_new将计算为var1(来自df2)*组“A”和val“AB”的df1的'cal1'值*组“A”和val“AB”的df1的'cal2'值 我的预期输出如下所示: 以下基于其他stackflow

  • 问题内容: 我想申请我的自定义函数(它使用的梯)这六个列我的数据帧的每一行中)。 我尝试了与其他问题不同的方法,但似乎仍然找不到适合我问题的正确答案。关键在于,如果该人被视为西班牙裔,就不能被视为其他任何人。即使他们在另一个种族栏中的得分为“ 1”,他们仍然被视为西班牙裔,而不是两个或两个以上的种族。同样,如果所有ERI列的总和大于1,则将它们计为两个或多个种族,并且不能计为唯一的种族(西班牙裔除

  • 我有以下问题,因为我是pyspark的新手。基于来自两列的值的条件,我想填充第三列。条件是: < li >如果分号包含在col2中,请检查col1 < ul > < li >如果col1 == 1,则取分号前的值 < li >如果col1 == 2,则取分号后的值 这就是数据帧的样子。 我创建了下面的udf,它给出了错误“不能将列转换为布尔值:请使用” 我通过谷歌搜索各种功能构建了这个udf,所以