【发布时间】:2019-12-06 14:56:57
【问题描述】:
我有 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) 将所有这 3 个数据帧附加到一个大的 result 数据帧中
当我使用以下代码尝试此操作时,输出与预期不符
df1.append(df2)
所以,为了解决这个问题,我知道我们必须重命名导致下面目标 b 的列名
b) 以优雅的方式将这 n 个数据帧的列重命名为统一
请注意,实时我可能有不同列名的数据框,我可能事先不知道,但它们中的值将始终相同,属于列Ethnicity、Gender 和Person_id。但请注意,还有其他几列,例如Age、Date、bp reading 等
目前,我通过使用下面的代码手动读取列名来做到这一点
df2.columns
df2.rename(columns={ethnicity:'ethn',gender = 'gen',person_id='pers_id},
inplace=True)
如何将所有数据框的列名设置为相同(gender、ethnicity、person_id 等),而不管它们的原始列值如何
【问题讨论】:
-
您想将 3 个不同标头的数据框合并为一个合并在相同标头下的数据框吗?您的数据是否一致,
person_id始终出现在第一列,gender出现在第二列等等? -
不,它们是随机排列的
-
@BerkayÖz - 可能是这样,我可以尝试解决这个问题。让我们考虑它的顺序相同
-
如果它们的顺序相同,您可以通过Alessandro Flati 应用答案。如果不是,您可能想尝试模糊字符串匹配。如果您需要帮助,我可以发布答案。
-
你有兴趣分享起泡串的方法吗?如果列的顺序不同。
标签: python python-3.x pandas python-2.7 dataframe