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

发布于 2021-01-29 15:04:19

我有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和等),不论其原有的列值

关注者
0
被浏览
71
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    根据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)
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看