当前位置: 首页 > 面试题库 >

追加具有不同列名的数据框-Pandas

吴嘉禧
2023-03-14
问题内容

我有3个数据框,可以从下面显示的代码中生成

df1= pd.DataFrame({'person_id':[1,2,3],'gender': ['Male','Female','Not disclosed'],'ethn': ['Chinese','Indian','European']})
df2= pd.DataFrame({'pers_id':[4,5,6],'gen': ['Male','Female','Not disclosed'],'ethnicity': ['Chinese','Indian','European']})
df3= pd.DataFrame({'son_id':[7,8,9],'sex': ['Male','Female','Not disclosed'],'ethnici': ['Chinese','Indian','European']})

我想做两件事

a) 将所有这三个数据帧追加到一个大result数据帧中

当我尝试使用以下代码进行此操作时,输出结果与预期不符

df1.append(df2)

在此处输入图片说明

因此,要解决此问题,我了解我们必须重命名导致以下目标b的列名

b) 以一种优雅的方式将这n个数据帧的列重命名为统一的

请注意,在实时情况下,我可能具有预先不知道的具有不同列名的数据框,但它们中的值始终属于列和EthnicityGender并且始终相同Person_id。但请注意,可以有其他几列,以及像AgeDatebp reading

目前,我是通过使用以下代码手动读取列名来完成此操作的

df2.columns
df2.rename(columns={ethnicity:'ethn',gender = 'gen',person_id='pers_id}, 
             inplace=True)

如何设置列名的所有数据帧是相同的(genderethnicityperson_id和等),不论其原有的列值


问题答案:

根据pandas文档,您可以执行以下操作创建映射:

df2.rename(columns={column1:'ethn', column2:'gen', column3:'pers_id'}, inplace=True)

现在,您明确声明必须执行此运行时。如果您知道列数及其相应位置不会改变,则可以使用收集实际的列名df2.columns(),该名称应输出如下内容:

['ethnicity', 'gender', 'person_id']

此时,您可以按以下方式创建映射:

final_columns = ['ethn', 'gen', 'pers_id']
previous_columns = df2.columns()
mapping = {previous_columns[i]: final_columns[i] for i in range(3)}  # 3 is arbitrary.

然后打电话

df2.rename(mapping, inplace=True)


 类似资料:
  • 问题内容: 我肯定在这里错过了一些简单的事情。尝试在熊猫中合并具有相同列名的两个数据框,但右侧的数据框具有一些左侧没有的列,反之亦然。 我试着加入外部联接: 但这产生了: 我还指定了一个要连接的单列(例如on =“ id”),但是它复制了除“ id”以外的所有列,例如attr_1_x,attr_1_y,这并不理想。我也将整个列列表(有很多)传递给了“ on”: 产生: 我想念什么?我想获得一个带有

  • 我正在使用的数据库有许多具有相同列但(显然)具有不同表名的表(不是我设计的)。例如(这些是数据库表名): 有没有可能用JPA和Hibernate将这些映射到一个Java类实体?类的名称是,然后在使用它时传入例如,以便对象使用表? 还是只使用普通的、普通的Java对象来完成这样的任务更好? 谢谢你!

  • 问题内容: 我正在使用ajax加载数据并在DataTable中动态生成列名。我的数据表具有不同的列数,具体取决于用户的选择。(有一个下拉列表)。 例如,下拉列表中有2个选项,即“ 南部省” 和“ 北部省” 。 南部省 表有4列, 北部省 表有6列。 场景1 第一个用户选择具有4列的 Southern Province 。然后它生成的表没有错误,但是在此之后,如果用户选择具有6列的 Northern

  • 问题内容: 这可能很容易,但是我有以下数据: 在数据框1中: 在数据框2中: 我想要一个具有以下形式的数据框: 我尝试使用该方法,但是得到了交叉连接(即笛卡尔积)。 什么是正确的方法? 问题答案: 通常看来,您只是在寻找联接:

  • 问题内容: 在SQL中,将行复制到另一个(备份)表中。如果备份表具有不同的结构(或不同的列名称),这可能吗?如果没有,实现此目标的最佳方法是什么? 这是我想做的:具有columns 。我想将一些行从该表复制到另一个具有column的表。内容进入,对等 问题答案: 该 列名 不事可言,只要该 数据类型 相匹配。 如果列的数据类型不匹配,请尝试相应地强制转换值。 只需尝试 使用小的虚拟表。确保明确列出

  • 问题内容: 给定一个DataFrame: 添加包含常量值(例如0)的新列的最简单方法是什么? 这是我的解决方案,但我不知道为什么这会将NaN放入“新”列? 问题答案: 之所以将其放入一列中,是因为和您右侧对象的有所不同。@zach显示了分配新的零列的正确方法。通常,尝试使索引尽可能地对齐。一个缺点是,当指数不对准你,无论他们 是不是 一致。尝试使用和方法来获得一些直觉,以便对齐具有部分,完全和未对