Pandas二数据帧交叉连接

2024-09-29 02:21:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我找不到关于交叉连接的任何内容,包括合并/连接或其他内容。 我需要用{my function}作为myfunc处理两个数据帧。 相当于:

{
    for itemA in df1.iterrows():
           for itemB in df2.iterrows():
                       t["A"] = myfunc(itemA[1]["A"],itemB[1]["A"])
 }      

相当于:

{
 select myfunc(df1.A,df2.A),df1.A,df2.A from df1,df2;
}

但我需要更有效的解决方案: 如果使用apply,我将如何实现它们thx;^^


Tags: 数据infrom内容formyfunctionmyfunc
2条回答

对于交叉积,请参见this question

本质上,您必须执行普通合并,但为每一行指定相同的键来连接,以便每一行在帧之间彼此连接。

然后,可以通过应用函数将列添加到新框架中:

new_df = pd.merge(df1, df2, on=key)
new_df.new_col = newdf.apply(lambda row: myfunc(row['A_x'], row['A_y']), axis=1)

axis=1强制.apply跨行工作如果合并的框架与示例中的列共享,则结果框架中的默认列名为“x”和“y”。

创建一个公共“键”来交叉连接两个:

df1['key'] = 0
df2['key'] = 0

df1.merge(df2, how='outer')

相关问题 更多 >