【问题标题】:DataFrame from Tuples来自元组的数据帧
【发布时间】:2021-01-02 19:28:25
【问题描述】:

我正在尝试从元组列表创建数据框,但我收到错误列表'对象没有属性'toDF'。我怎样才能避免这个错误。 (https://www.gutenberg.org/files/63207/63207-0.txt)

with open('/files/63207-0.txt', 'r') as content_file:
material = content_file.read()

material = remove_white_spaces(normalize_text(content))

beginning_string = 'Introduction To Book' 
end_string = 'End of Book'
real_material = material[material.find(beginning_string)+len(beginning_string):material.rfind(end_string)]

Chapters = re.split(" Chapter [0-9]+ ", actual_content, flags=re.IGNORECASE)[1:]

save_data = []
for i in range(1,1+len(chapters)):
save_data.append((i,chapters[i-1]))


Get the dataframe from a list of tuples with columns ["page_number", "text"]
from pyspark.sql import SparkSession
from pyspark.sql.functions import SparkContext
from pyspark.sql import Row
data = sc.parallelize(save_data)
data_converted = data.map(lambda x: (x[0], x[1], x[1], x[1])
schema = StructType([StructField("chapter"), StringType(), True), StuctField("text"), StringType(), True)

 df = SqlContext.createDataFrame(data_converted, schema)
 df.show(5)

Binning using Bucketizer

splits = [0, 11, 21, 31, 41, 51, float("inf")]
bucketizer = Bucketizer(splits=splits, inputCol="chapters", outputCol="buckets")
df_buck = bucketizer.transform(df)
df_buck.show(20)

【问题讨论】:

  • 多么糟糕的代码,使用你的RDDobject,而不是list

标签: python dataframe tuples


【解决方案1】:

如果您的列表 save_data 看起来与此 [(1,2),(3,5)] 类似。就像包含元组的列表一样,您可以使用 Pandas 轻松创建数据框。显然,列表不会有任何属性“toDF”。 DataFrames 是 Pandas 模块的对象。 这就是你实现结果的方法:

import pandas as pd
df = pd.DataFrame(save_data, columns=["page_number", "text"])

使用 PySpark 数据帧:

from pyspark.context import SparkContext
from pyspark.sql.session import SparkSession
sc = SparkContext('local')
spark = SparkSession(sc)
df = spark.createDataFrame(save_data)
print(df)

【讨论】:

  • 熊猫数据框不适用于我的分桶器。它也来自一个文本文件。
  • 好的,我会用 pySpark 来回答。
  • @DavidFrost - 请告诉我们“DataFrame”在您的上下文中的含义。它通常用于熊猫。如果你给我们上下文,我们就不必猜测了。
  • @tdelaney 我刚刚修好了。
  • @Naazneen Jatu 当我使用此编码时,我收到一个“str”对象没有属性“_jsc”错误。
猜你喜欢
  • 2016-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多