为什么要将 map 函数转换为 Pandas DataFrame 中的列表?

Why convert map function to list in Pandas DataFrame?

为了一项学校作业,我正在分析推文。从获得的 Twitter 数据中,我们只对推文的文本感兴趣。他们使用以下代码将其放入 DataFrame 中:

tweets['text'] =    list(map(lambda tweet: tweet['text'], tweets_data))

不明白为什么map函数要转成列表。 DataFrame 看起来不错,符合预期,但我不明白为什么需要将其转换为列表。有人可以解释一下吗?

因为您想将其分配为列,所以映射 returns 是一个映射对象,我相信它是一个生成器。让我们看一个简单的例子:

假设我们有以下数据框:

df = pd.DataFrame({"col1": list("abc")})
print(df)

  col1
0    a
1    b
2    c

我们有一个生成器函数,它简单地生成列表的每个值:

def get_column(values: list):
    for i in values:
        yield i

如您所见,如果我们直接将其分配为列,它将 return 生成器对象:

df["col2"] = get_column([1, 2, 3])
print(df)

  col1                                             col2
0    a  <generator object get_column at 0x7fbb1e2ca9e0>
1    b  <generator object get_column at 0x7fbb1e2ca9e0>
2    c  <generator object get_column at 0x7fbb1e2ca9e0>

但是将其转换为列表会给我们正确的结果。

df["col2"] = list(get_column([1, 2, 3]))
print(df)

  col1  col2
0    a     1
1    b     2
2    c     3