为什么要将 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
为了一项学校作业,我正在分析推文。从获得的 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