这个问题已经在这里有了答案 :
带有熊猫的高性能笛卡尔积(CROSS JOIN) (3个答案)
2年前关闭。
您将如何使用Pandas执行
完全外部
联接的两个没有 交叉 列的数据框 的交叉 联接?
在MySQL中,您可以简单地执行以下操作:
SELECT *
FROM table_1
[CROSS] JOIN table_2;
但是在熊猫中,请执行以下操作:
df_1.merge(df_2, how='outer')
给出一个错误:
MergeError: No common columns to perform merge on
到目前为止,我最好的解决方案是使用sqlite
:
将sa导入sqlalchemy
引擎= sa.create_engine('sqlite:///tmp.db')
df_1.to_sql('df_1',引擎)
df_2.to_sql('df_2',引擎)
df = pd.read_sql_query('SELECT * FROM df_1 JOIN df_2',engine)
您需要同时merge
具有tmp
两个临时列的IIUC DataFrames
:
import pandas as pd
df1 = pd.DataFrame({'fld1': ['x', 'y'],
'fld2': ['a', 'b1']})
df2 = pd.DataFrame({'fld3': ['y', 'x', 'y'],
'fld4': ['a', 'b1', 'c2']})
print df1
fld1 fld2
0 x a
1 y b1
print df2
fld3 fld4
0 y a
1 x b1
2 y c2
df1['tmp'] = 1
df2['tmp'] = 1
df = pd.merge(df1, df2, on=['tmp'])
df = df.drop('tmp', axis=1)
print df
fld1 fld2 fld3 fld4
0 x a y a
1 x a x b1
2 x a y c2
3 y b1 y a
4 y b1 x b1
5 y b1 y c2
问题内容: 我找不到关于交叉联接的任何信息,包括合并/联接或其他一些东西。我需要使用{my function}作为myfunc处理两个数据帧。相当于: 相当于: 但我需要更有效的解决方案:如果使用了应用,我将如何实现它们; ^^ 问题答案: 对于叉积,请参阅此问题。 本质上,您必须进行常规合并,但为每一行赋予相同的键以进行连接,以使每一行在框架之间相互连接。 然后可以通过应用函数将列添加到新框架:
问题内容: 如何在交叉表中添加总计的另一行和一列? 我以为我会添加新列(通过对行求和而获得) 但这不起作用。 问题答案: 这是因为“类似属性”的列访问不适用于整数列名。使用标准索引: 请参阅文档本节末尾的警告:http : //pandas.pydata.org/pandas- docs/stable/indexing.html#attribute-access 当您要使用行时,可以使用: 在这种
我有1个数据帧,我想选择所有没有重复的行 我的df: 我的输出应该是: 我正在使用熊猫数据框 有什么建议吗?
我有一个数据帧,如: 所以我想通过两个“for循环”添加一些列,如: 新的类似数据帧的图片: 我的代码不起作用: 如何编写代码来获得像第二张图片这样的数据帧?
问题内容: 我想将两个数据框A,B连接到一个没有重复行的新数据框(如果B中的行已经存在于A中,则不要添加): 数据框A:数据框B: 新数据框: 我怎样才能做到这一点? 问题答案: 最简单的方法是只进行串联,然后删除重复项。 本是后来修复指标和。没有它,您将拥有而不是的索引。如果不立即重置,可能会导致进一步操作的问题。
我希望为结果提供内容过滤。我的(为简洁起见而编辑)实体如下所示: 节点: 场景: 来源: 下面是我希望实现的筛选器的一个示例。 给定一个SourceTypes集合,我希望选择所有场景,这样每个场景都会被其中一个类型的源引用。我使用QueryDSL和以下谓词实现了这一点: 一系列这些谓词被组合起来给出一个整体查询。即使只选择一个SourceType,结果查询看起来也是这样: 我相信上面发生的是交叉连
根据我对左向外连接的理解,结果表的行永远不会比左表多...请让我知道如果这是错的... 我的左表是192572行8列。 我右边的表格是42160行和5列。 我的左表有一个名为“id”的字段,它与我的右表中名为“key”的列相匹配。 因此,我将它们合并为: 但是然后组合的形状是236569。 我有什么误会?
我想对两个不同的数据帧执行一些sql操作。不幸的是,就像我处理的数据一样,拼写通常是不同的。 下面是一个示例,其中userid属于df1,username属于df2。有人帮我吗?