gpt4 book ai didi

python - 加入来自同一来源的两个 DataFrame

转载 作者:太空狗 更新时间:2023-10-30 00:06:44 24 4
gpt4 key购买 nike

我正在使用 pyspark (Apache Spark) 的 DataFrame API,遇到了以下问题:

当我加入源自同一源 DataFrame 的两个 DataFrame 时,生成的 DF 将爆炸成大量行。一个简单的例子:

我从磁盘加载一个包含 n 行的 DataFrame:

df = sql_context.parquetFile('data.parquet')

然后我从该源创建两个 DataFrame。

df_one = df.select('col1', 'col2')
df_two = df.select('col1', 'col3')

最后我想(内心)将它们重新组合在一起:

df_joined = df_one.join(df_two, df_one['col1'] == df_two['col1'], 'inner')

col1 中的键是唯一的。生成的 DataFrame 应该有 n 行,但它确实有 n*n 行。

这不会发生,当我直接从磁盘加载 df_onedf_two 时。我使用的是 Spark 1.3.0,但这也发生在当前的 1.4.0 快照上。

谁能解释为什么会这样?

最佳答案

如果我没看错的话,df_two 没有 col2

    df_one = df.select('col1', 'col2')
df_two = df.select('col1', 'col3')

所以当你这样做的时候:

    df_one.join(df_two, df_one['col1'] == df_two['col2'], 'inner')

那应该会失败。如果你想说

    df_one.join(df_two, df_one['col1'] == df_two['col1'], 'inner')

但是,您从同一个数据帧加载这一事实应该没有影响。我建议你这样做:

    df_one.show()
df_two.show()

确保您选择的数据符合您的预期。

关于python - 加入来自同一来源的两个 DataFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29776578/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com