Python 为什么要将映射函数转换为数据帧中的列表?

Python 为什么要将映射函数转换为数据帧中的列表?,python,pandas,dataframe,twitter,Python,Pandas,Dataframe,Twitter,对于学校作业,我在分析推特。从获得的推特数据来看,我们只对推特的文本感兴趣。他们将其放入一个带有以下代码的数据框中: tweets['text'] = list(map(lambda tweet: tweet['text'], tweets_data)) 我不明白为什么映射函数被转换为列表。DataFrame看起来很理想,但我不明白为什么需要将其转换为列表。有人能解释一下吗?因为您想将其指定为列,所以map返回一个map对象,我相信它是一个生成器。让我们看一个简化的例子: 假设我们有以下

对于学校作业,我在分析推特。从获得的推特数据来看,我们只对推特的文本感兴趣。他们将其放入一个带有以下代码的数据框中:

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

我不明白为什么映射函数被转换为列表。DataFrame看起来很理想,但我不明白为什么需要将其转换为列表。有人能解释一下吗?

因为您想将其指定为列,所以map返回一个map对象,我相信它是一个生成器。让我们看一个简化的例子:

假设我们有以下数据帧:

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
如您所见,如果我们将其直接指定为列,它将返回generator对象:

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