使用 Koalas 将字典列表转换为 DataFrame
Convert list of dict into DataFrame with Koalas
我尝试将字典列表转换为 Databricks 的 Koalas DataFrame,但我不断收到错误消息:
ArrowInvalid: cannot mix list and non-list, non-null values
Pandas 完美工作(使用 pd.DataFrame(list))但由于公司限制我必须使用 PySpark/Koalas。
我也试过将列表转换成字典,但错误仍然存在。
列表示例:
[{'A': None,
'B': None,
'C': None,
'D': None,
'E': [],
...},
{'A': data,
'B': data,
'C': data,
'D': data,
'E': None,
...}
]
字典是这样的:
{'A': [None, data, [], [], data],
'B': [None, data, None, [], None],
'C': [None, data, None, [], None],
'D': [None, data, None, [], None],
'E': [[], None, data, [], None]}
是否可以从中获取DataFrame?
谢谢
您可以使用您的数据创建 Spark DataFrame,而无需使用 spark.createDataFrame()
进行数据操作。
sdf = spark.createDataFrame(
data_list,
T.StructType([
T.StructField('A', T.ArrayType(T.IntegerType()), True),
T.StructField('B', T.ArrayType(T.IntegerType()), True),
T.StructField('C', T.ArrayType(T.IntegerType()), True),
T.StructField('D', T.ArrayType(T.IntegerType()), True),
T.StructField('E', T.ArrayType(T.IntegerType()), True),
])
)
然后可以使用 to_koalas()
.
将其转换为 Koalas DataFrame
>>> sdf.to_koalas()
A B C D E
0 None None None None []
1 [1, 2, 3] [1, 2, 3] [1, 2, 3] [1, 2, 3] None
此外,我能够在不通过 Spark 的情况下创建 Koalas DataFrame,方法是修改您的数据,使空列表 []
的值变为 None
。
data_list = [
{
'A': None,
'B': None,
'C': None,
'D': None,
'E': None,
},
{
'A': [1, 2, 3],
'B': [1, 2, 3],
'C': [1, 2, 3],
'D': [1, 2, 3],
'E': None,
}
]
>>> import databricks.koalas as ks
>>> ks.DataFrame(data_list)
A B C D E
0 None None None None None
1 [1, 2, 3] [1, 2, 3] [1, 2, 3] [1, 2, 3] None
我尝试将字典列表转换为 Databricks 的 Koalas DataFrame,但我不断收到错误消息:
ArrowInvalid: cannot mix list and non-list, non-null values
Pandas 完美工作(使用 pd.DataFrame(list))但由于公司限制我必须使用 PySpark/Koalas。 我也试过将列表转换成字典,但错误仍然存在。
列表示例:
[{'A': None,
'B': None,
'C': None,
'D': None,
'E': [],
...},
{'A': data,
'B': data,
'C': data,
'D': data,
'E': None,
...}
]
字典是这样的:
{'A': [None, data, [], [], data],
'B': [None, data, None, [], None],
'C': [None, data, None, [], None],
'D': [None, data, None, [], None],
'E': [[], None, data, [], None]}
是否可以从中获取DataFrame? 谢谢
您可以使用您的数据创建 Spark DataFrame,而无需使用 spark.createDataFrame()
进行数据操作。
sdf = spark.createDataFrame(
data_list,
T.StructType([
T.StructField('A', T.ArrayType(T.IntegerType()), True),
T.StructField('B', T.ArrayType(T.IntegerType()), True),
T.StructField('C', T.ArrayType(T.IntegerType()), True),
T.StructField('D', T.ArrayType(T.IntegerType()), True),
T.StructField('E', T.ArrayType(T.IntegerType()), True),
])
)
然后可以使用 to_koalas()
.
>>> sdf.to_koalas()
A B C D E
0 None None None None []
1 [1, 2, 3] [1, 2, 3] [1, 2, 3] [1, 2, 3] None
此外,我能够在不通过 Spark 的情况下创建 Koalas DataFrame,方法是修改您的数据,使空列表 []
的值变为 None
。
data_list = [
{
'A': None,
'B': None,
'C': None,
'D': None,
'E': None,
},
{
'A': [1, 2, 3],
'B': [1, 2, 3],
'C': [1, 2, 3],
'D': [1, 2, 3],
'E': None,
}
]
>>> import databricks.koalas as ks
>>> ks.DataFrame(data_list)
A B C D E
0 None None None None None
1 [1, 2, 3] [1, 2, 3] [1, 2, 3] [1, 2, 3] None