我找不到任何关于交叉连接的内容,包括合并/加入或其他一些.我需要使用{my function}作为myfunc来处理两个数据帧.相当于:
{
for itemA in df1.iterrows():
for itemB in df2.iterrows():
t["A"] = myfunc(itemA[1]["A"],itemB[1]["A"])
}
Run Code Online (Sandbox Code Playgroud)
相当于:
{
select myfunc(df1.A,df2.A),df1.A,df2.A from df1,df2;
}
Run Code Online (Sandbox Code Playgroud)
但我需要更有效的解决方案:如果使用apply我将是如何实现它们thx; ^^
A.K*_*Kot 19
创建一个共同的"密钥"来交叉加入两个:
df1['key'] = 0
df2['key'] = 0
df1.merge(df2, how='outer')
Run Code Online (Sandbox Code Playgroud)
ler*_*yJr 10
对于叉积,请参阅此问题。
本质上,您必须进行正常的合并,但为每一行提供相同的键以进行连接,以便每一行在帧中相互连接。
然后,您可以通过应用您的函数向新框架添加一列:
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)
Run Code Online (Sandbox Code Playgroud)
axis=1强制跨行.apply工作。如果合并的帧共享一个像您的示例中的列,则 'A_x' 和 'A_y' 将是结果帧中的默认列名称。
| 归档时间: |
|
| 查看次数: |
25394 次 |
| 最近记录: |