Python 访问“中的不同列”;套用;在数据帧中

Python 访问“中的不同列”;套用;在数据帧中,python,pandas,numpy,Python,Pandas,Numpy,我正在寻找在行上“迭代”的正确方法,或者——比方说——不用迭代就可以做同样的事情,因为我知道迭代不是处理数据帧中数据进行计算的推荐方法,例如在pandas文档和中解释的。更确切地说,让我解释一下我的问题 我有一个包含起始值、结束值和步骤数的数据框,例如 df_test=pd.DataFrame({“start”:[-2.0,-1.0,-5.0], “结束”:[3.0,1.0,-1.0], “n”:[6,3,9] }) 从这个数据帧中,我想为现有的数据帧创建一个新列,该数据帧包含由上述起点和终点

我正在寻找在行上“迭代”的正确方法,或者——比方说——不用迭代就可以做同样的事情,因为我知道迭代不是处理数据帧中数据进行计算的推荐方法,例如在pandas文档和中解释的。更确切地说,让我解释一下我的问题

我有一个包含起始值、结束值和步骤数的数据框,例如

df_test=pd.DataFrame({“start”:[-2.0,-1.0,-5.0],
“结束”:[3.0,1.0,-1.0],
“n”:[6,3,9]
})
从这个数据帧中,我想为现有的数据帧创建一个新列,该数据帧包含由上述起点和终点以及点数描述的连接的linspace。现有数据帧具有匹配的形状。我目前的方法是使用列表理解,然后将数组连接到单个数组,然后添加列。因此:

linspacePts=np.concatenate([np.linspace(s,e,n)表示zip中的s,e,n(df_测试[“开始”]、df_测试[“结束”]、df_测试[“n”]))
df_其他[“林点”]=林点
但我的第一个想法是以某种方式使用。但是我不知道如何告诉
np.linspace
哪个列对应于函数的哪个参数。至少,我找到了一个解决办法,但我希望有一个更好的解决方案,通过列表和numpy数组实现所需的迂回


谢谢你的帮助

使用dataframe的apply方法,并使用
[]
语法为所需的列编制索引

import numpy as npd
import pandas as pd

df_test = pd.DataFrame({"start": [-2.0, -1.0, -5.0 ],
                        "end": [3.0, 1.0, -1.0],
                        "n": [6, 3, 9]
                       })
df_test.apply(lambda row: np.linspace(row["start"], row["end"], row["n"].astype(int)), axis=1)
如果您不熟悉
lambda
函数,则以下内容相同,但更详细

def create_linspace(row):
    # row is a pd.Series
    return np.linspace(row["start"], row["end"], row["n"].astype(int))

df_test.apply(create_linspace, axis=1)
请注意,您需要将
n
的值强制转换为整数类型,因为
np.linspace
将引发异常


然后,您可以将结果与
np.concatenate
连接起来。我不确定您计划如何将此阵列添加到数据帧。数据帧通常是矩形的,这意味着不能有长度不等的行。因为您的
n
值不同,所以将有不同的长度数组。

嘿,jakub,谢谢!我也在寻找一个关于lambda函数的正确答案。但是我没有意识到我可以通过这种方式访问一行的条目。那正是我要找的!关于如何将其添加到数据帧,它是另一个具有
np.sum(df_test[“n”])
行的数据帧。所以尺寸确实合适。在这里,在给定的示例中,我将第二个数据帧表示为
df_other