【发布时间】:2019-05-01 23:46:08
【问题描述】:
我有一个返回系列的函数。我使用 apply() 将函数应用于我的 DataFrame,并且我想将生成的 Series 存储到数据框的新列中。例如,
| 1 | 2
---+---+------------------------------------
0 | 1 | <class 'pandas.core.series.Series'>
1 | 2 | <class 'pandas.core.series.Series'>
2 | 3 | <class 'pandas.core.series.Series'>
但是,pandas 似乎想扩展系列并将其存储到多个列中,所以我得到一个 ValueError: Wrong number of items passed 3,placement means 1。
import pandas as pd
df = pd.DataFrame({1: [1, 2, 3]})
def f(x):
return pd.Series(['a', 'b', 'c'])
df[2] = df.apply(f, axis=1)
应该如何处理?
【问题讨论】:
-
您似乎可以使用
df[2] = [f(x) for x in df[1]]来做到这一点,但我不确定在数据框的单元格中设置一个系列真的是个好主意。 -
谢谢 Ben,你的似乎更接近答案,因为它仍然使用 f() 来生成系列,但为什么这是一个坏主意?
-
在 W-B 的回答下查看@Kyle 的评论。
标签: python python-3.x pandas