【问题标题】:Why convert map function to list in Pandas DataFrame?为什么要将 map 函数转换为 Pandas DataFrame 中的列表?
【发布时间】:2020-09-20 22:02:29
【问题描述】:
对于学校作业,我正在分析推文。从获得的 Twitter 数据中,我们只对推文的文本感兴趣。他们使用以下代码将其放入 DataFrame 中:
tweets['text'] = list(map(lambda tweet: tweet['text'], tweets_data))
我不明白为什么将 map 函数转换为列表。 DataFrame 看起来不错,但我不明白为什么需要将其转换为列表。有人可以解释一下吗?
【问题讨论】:
标签:
python
pandas
dataframe
twitter
【解决方案1】:
因为您想将其分配为列,所以 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
如您所见,如果我们直接将其赋值为列,它将返回生成器对象:
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