我有以下3个数据帧
df_hl
EXTRACT(MONTH FROM <value>)
df_sc
State District Level Name TRU No_HH TOT_HL_P TOT_HL_M
0 0 India India Total 449787 1773040
0 0 India India Rural 192891 834692
0 0 India India Urban 256896 938348
df_st
State District Level Name TRU No_HH_Head_sc TOT_P_sc
0 0 India India Total 41694863 201378372
0 0 India India Rural 31803775 153850848
0 0 India India Urban 9891088 47527524
这些是我对数据框的名称进行预处理后的结构。原始数据集中的列和行数更多。
我要做的是根据以下各列组合所有这些数据框:`州,地区,级别,名称和TRU。
我的结果数据框应采用以下格式:
State District Level Name TRU No_HH_Head_st TOT_P_st TOT_M_st
0 0 India India Total 21511528 104545716 52547215
0 0 India India Rural 19302332 94083844 47263733
0 0 India India Urban 2209196 10461872 5283482
我试图根据这些列创建索引,但是不知道如何合并所有列。任何帮助将不胜感激。
State District Level Name TRU No_HH TOT_HL_P TOT_HL_M No_HH_Head_sc TOT_P_sc No_HH_Head_st TOT_P_st TOT_M_st
0 0 India India Total 449787 1773040 41694863 201378372 21511528 104545716 52547215
0 0 India India Rural 192891 834692 31803775 153850848 19302332 94083844 47263733
0 0 India India Urban 256896 938348 41694863 201378372 2209196 10461872 5283482
非常感谢。
答案 0 :(得分:1)
看起来像您想要的东西
df1.merge(df2,how='left').merge(df3,how='left')
?
答案 1 :(得分:0)
您可能想要的是数据框的内部连接。假设您将熊猫导入为import pandas as pd
:
df_final = pd.merge(left=pd.merge(left=df_hl, right=df_sc, on=["State", "District", "Level", "Name", "TRU"]), right=df_st, on=["State", "District", "Level", "Name", "TRU"])
此处介绍了使用任意数量的数据帧执行此操作的更通用方法:
pandas three-way joining multiple dataframes on columns
import functools
dfs = [df_hl, df_sc, df_st]
df_final = functools.reduce(lambda left, right: pd.merge(left=left, right=right, on=["State", "District", "Level", "Name", "TRU"]), dfs)