用pandas系列替换Python列表理解

用pandas系列替换Python列表理解,python,pandas,Python,Pandas,我经常想创建一个函数值列表,比如[f(0),f(2),…f(100)],然后绘制结果。我的解决方案是这样的 x = list(range(101)) y = [f(n) for n in x] plt.plot(x,y) x = pd.Series(range(101)) y = x.apply(f) y.plot() 然而,我用熊猫做其他的东西,我想知道是否有一种更整洁的方法可以用熊猫做同样的事情?有可能做像这样的事情 x = list(range(101)) y = [f(n) for

我经常想创建一个函数值列表,比如[f(0),f(2),…f(100)],然后绘制结果。我的解决方案是这样的

x = list(range(101))
y = [f(n) for n in x]
plt.plot(x,y)
x = pd.Series(range(101))
y = x.apply(f)
y.plot()
然而,我用熊猫做其他的东西,我想知道是否有一种更整洁的方法可以用熊猫做同样的事情?有可能做像这样的事情

x = list(range(101))
y = [f(n) for n in x]
plt.plot(x,y)
x = pd.Series(range(101))
y = x.apply(f)
y.plot()

但我觉得这样定义x很尴尬。有更干净的方法吗?

不要这样做。。。而是将f转换为接受一个系列

def f(x):
    return numpy.sin(x) + 3

x = pd.Series(range(101))
y = f(x)
应用程序在很大程度上只是一个方便的功能,它可能不会提供任何加速

如果你只是想要范围。。。只需使用
numpy.arange
它在下一步的性能应与一系列产品相当或更好

x = np.arange(101)
y = f(x)
如果你以后不关心x,你可以直接通过arange

y = f(np.arange(101))
plt.plot(y)
plt.show()

或者如果没有熊猫
y=list(map(f,x))
@ansev,OP已经有了一个非常好的方法,可以在没有熊猫的情况下做到这一点。。。问题的关键是使用Pandas,这有什么尴尬之处?你想避免的是什么?