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