Python - pandas 每个 运行 的笛卡尔积大小不同
Python - pandas different size of cartesian product every run
我在 python 中有两个数据框,我想对它们进行笛卡尔积运算。
为此,我使用了具有相同键命令的合并,如下所示:
print("dna", df_genes.size)
print("names",df_citations.size)
df_genes['key'] = 0
df_citations['key'] = 0
df = pd.merge(df_genes, df_citations, on='key').drop('key', axis = 1)
print("df before",df.size)
但是,每个 运行 我都会得到一个不同大小的笛卡尔积——而且它永远不会是前两个数据帧的乘积。
例如,在最后 运行 我得到:
('dna', 7437309)
('names', 165)
('df before', 490862394)
(大家可以看到,差别还是蛮大的)
这对我来说听起来很奇怪。有人知道吗?
不要使用 .size,它显示行数乘以列数。要检查您的笛卡尔积是否有效,您希望当 df1 有 5 行并且 df2 有 3 行时,笛卡尔积将产生 15 行。您可以通过将 .size 替换为 .shape 或 .shape[0]
来进行检查
你的情况:
print("dna", df_genes.shape[0])
print("names", df_citations.shape[0])
df_genes['key'] = 0
df_citations['key'] = 0
df = pd.merge(df_genes, df_citations, on='key').drop('key', axis = 1)
print("df before", df.shape[0])
我在 python 中有两个数据框,我想对它们进行笛卡尔积运算。 为此,我使用了具有相同键命令的合并,如下所示:
print("dna", df_genes.size)
print("names",df_citations.size)
df_genes['key'] = 0
df_citations['key'] = 0
df = pd.merge(df_genes, df_citations, on='key').drop('key', axis = 1)
print("df before",df.size)
但是,每个 运行 我都会得到一个不同大小的笛卡尔积——而且它永远不会是前两个数据帧的乘积。 例如,在最后 运行 我得到:
('dna', 7437309)
('names', 165)
('df before', 490862394)
(大家可以看到,差别还是蛮大的)
这对我来说听起来很奇怪。有人知道吗?
不要使用 .size,它显示行数乘以列数。要检查您的笛卡尔积是否有效,您希望当 df1 有 5 行并且 df2 有 3 行时,笛卡尔积将产生 15 行。您可以通过将 .size 替换为 .shape 或 .shape[0]
来进行检查你的情况:
print("dna", df_genes.shape[0])
print("names", df_citations.shape[0])
df_genes['key'] = 0
df_citations['key'] = 0
df = pd.merge(df_genes, df_citations, on='key').drop('key', axis = 1)
print("df before", df.shape[0])