【发布时间】:2021-05-11 19:12:37
【问题描述】:
我正在尝试找到一种更快的方法,将函数多次应用于 DataFrame 中的一组数据。
我有两个 DataFrame:
- Parameters:函数的每个参数都有一列,每一行是一个特定的参数集。还有一列为每个集合提供了一个唯一的名称。
- 原始数据:在一列中包含原始数据
对于每组参数,我想在原始DataFrame中添加一列,结果来自“func”,并将列名设置为参数集名称。
目前我正在遍历参数DataFrame的行,但我觉得有更好的方法。
我正在尝试查看是否有矢量化解决方案,但到目前为止,我使用两个 DataFrame 都没有成功。
我已经尝试在这篇文章中遵循 cs95 的答案,但几乎所有矢量化或列表推导的示例都只处理单个 DataFrame: How to iterate over rows in a DataFrame in Pandas
有没有更好的方法来做到这一点?
我觉得我可能缺少一些明显的东西。
import pandas as pd
def func(data, a, b, c):
return data["original"] + a + b * c
parameters = pd.DataFrame(
{
"name": ["set_1", "set_2", "set_3"],
"a": [1, 2, 3],
"b": [4, 5, 6],
"c": [7, 8, 9],
}
)
data = pd.DataFrame({"original": [10, 11, 12, 13, 14, 15]})
for i, row in parameters.iterrows():
data[row["name"]] = func(data, row["a"], row["b"], row["c"])
Inputs:
Parameters DataFrame:
name a b c
0 set_1 1 4 7
1 set_2 2 5 8
2 set_3 3 6 9
Original Data DataFrame:
original
0 10
1 11
2 12
3 13
4 14
5 15
Output:
original set_1 set_2 set_3
0 10 39 52 67
2 12 41 54 69
3 13 42 55 70
4 14 43 56 71
5 15 44 57 72
【问题讨论】:
标签: python pandas dataframe iteration vectorization