arrays - 来自 pyspark.sql.dataframe.DataFrame 的 numpy 转换为字符串数组
问题描述
我需要查询 pyspark.sql.dataframe.DataFrame 中的列。我希望从该列创建一个字符串数组。我正在使用 numty 数组来实现这一点,但是我得到的结果是一个数组数组
import numpy as np
df = spark.read.load(parquetfiles/part-00000-e7dad738-8895-45e8-9926-39c9d677b999-c000.snappy.parquet', format='parquet')
data_array = np.asarray(df.select('name').collect())
print(type(data_array),data_array)
for x in data_array:
str = x[0]
print(type(x))
我从第一次打印中得到的输出是:
<class 'numpy.ndarray'> [['London']
['New York']
['Paris']
['Rome']
['Berlin']]
从第二张打印我得到
<class 'numpy.ndarray'>
所以我的问题是:是否可以将这些值作为字符串数组获取,或者如果失败,我可以创建一个动态,将我的 for 循环中的 str 值添加为字符串?
我尝试过的事情。
- 使用 asarray 而不是数组,如您所见,我得到了相同的结果。
- data_array = list(data_array),我得到了一个列表,但它不可用,因为它也包含所有元数据。
接受建议和额外阅读,而不是完整的解决方案。谢谢。
解决方案
帖子的力量。
import numpy as np
df = spark.read.load(parquetfiles/part-00000-e7dad738-8895-45e8-9926-39c9d677b999-c000.snappy.parquet', format='parquet')
data_array = np.asarray(df.select('name').collect())
cases = []
for x in data_array:
str = x[0]
cases.append(str)