根据单个列信任在大熊猫中合并两条记录

时间:2018-05-01 15:41:02

标签: python python-3.x pandas dataframe

我最近开始使用Pandas(Python初学者)。我正在尝试合并来自不同ID的两个记录,并创建一个最终记录,其中包含每个列我信任的ID中每列的值。

df_output:
NAME      ADDRESS    PHONE
abc       street2     8888    

所以在这里,基于每个id的每列的优先级,我应该得到单输出记录:

AlertDialog

所以基本上我应该从ID = 1获得NAME,从ID = 2获得其他2个字段 同样,我有成千上万的记录,我将通过逻辑选择两对记录,并使用上述方法计算最终输出记录。

除了循环每个数据帧的每一列,提取优先级并按concat列逐列构建新记录之外,我无法想到实现此目的的方法。但我认为这是非常低效的。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

我可能误解了您的问题,但无论如何,重新审视您组织数据帧的方式似乎很有用。话虽这么说,这个解决方案虽然可能不优雅,但却适用于您的情况:

gridSpan

您的# start by concatenating df1 and df2 into one dataframe full_df = pd.concat([df1, df2]) # create an empty output dataframe with the columns you want df_output = pd.DataFrame(columns = df1.columns[1:]) # loop through your df_col_priority, making a series of your desired values, # appending that series to df_output # this uses a list iteration df_output = df_output.append(pd.Series( [full_df.loc[full_df.ID == row.PRIORITY_BY_ID, row.COLUMN].values[0] for _, row in df_col_priority.iterrows()], index=df_col_priority.COLUMN), ignore_index=True) 看起来像是:

df_output