【问题标题】:MultiIndex Pandas DataFrame to Spark DataFrame & Missing IndexesMultiIndex Pandas DataFrame 到 Spark DataFrame 和缺失索引
【发布时间】:2017-03-11 18:07:11
【问题描述】:

拥有 MultiIndex Pandas DataFrame,如何在不丢失索引的情况下将其转换为 Spark DataFrame。这可以使用玩具示例轻松测试:

arrays = [['bar', 'bar', 'baz', 'baz', 'foo', 'foo', 'qux', 'qux'],
          ['one', 'two', 'one', 'two', 'one', 'two', 'one', 'two']]
tuples = list(zip(*arrays))
index = pd.MultiIndex.from_tuples(tuples, names=['first', 'second'])
df = pd.DataFrame(np.random.randn(8, 4), index=arrays)
df_spark = sqlContext.createDataFrame(df)

错过所有索引。为了保留索引,我还需要处理其他事情吗?

【问题讨论】:

    标签: pandas apache-spark pyspark apache-spark-sql multi-index


    【解决方案1】:

    Spark SQL 没有索引的概念,所以如果要保留它,你必须先将它重置或分配给一个列:

    df_spark = sqlContext.createDataFrame(df.reset_index(drop=False))
    

    这将创建一个DataFrame,并为索引中的每个字段添加一个列:

    df_spark.printSchema()
    
    root
     |-- level_0: string (nullable = true)
     |-- level_1: string (nullable = true)
     |-- 0: double (nullable = true)
     |-- 1: double (nullable = true)
     |-- 2: double (nullable = true)
     |-- 3: double (nullable = true)
    

    您也可以使用inplace 来避免额外的内存开销:

    df.reset_index(drop=False, inplace=True)
    df_spark = sqlContext.createDataFrame(df)
    

    【讨论】:

      猜你喜欢
      • 2021-09-03
      • 2015-07-19
      • 2012-10-02
      • 1970-01-01
      • 1970-01-01
      • 2017-03-02
      • 2019-05-20
      • 2017-08-25
      • 2016-11-06
      相关资源
      最近更新 更多