python - 使用 Pandas 从列表的一列中减去另一列中的值

标签 python pandas list

我有一个多索引数据框,我想在其中使用另一列的信息将函数应用于一列。以下是一些示例数据:

                ind pos                          log
x   y       z           
33.0 7.0    0.0 21  (997.232, 217.786, 26.6823) [1, 0, 0]
            0.0 22  (992.761, 217.274, 26.6758) [1, 0, 0]
            0.0 23  (998.916, 217.354, 27.9557) [1, 0, 0]
2.0 33.0    2.0 63  (66.6064, 999.717, 70.8408) [0, 1, 0]
            2.0 64  (65.7294, 999.793, 72.4056) [0, 1, 0]

我要申请这个功能

pos - 1000*log 

到数据框的每一行。解决此问题的最佳方法是什么?

最佳答案

不要像其他答案所暗示的那样使用apply。您应该改为将这些列提取为新的 DataFrame 并对它们执行矢量化算术。

i = pd.DataFrame(df['pos'].tolist())
j = pd.DataFrame(df['log'].tolist())

...或者您也可以使用 numpy 数组来做同样的事情:

i = np.array(df['pos'].tolist())
j = np.array(df['log'].tolist())

df['result'] = (i - 1000 * j).tolist()

作为旁注,请考虑将列表/可迭代对象的每一列分成具有单个标量值的多列。性能很重要,对于对象列,你最终会扼杀性能,除非你使用技巧(就像在这篇文章中),或者使用根本无法缩放的缓慢循环应用函数。

关于python - 使用 Pandas 从列表的一列中减去另一列中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51405985/

相关文章:

python - 使用表单字段更新 Django 模型

python - 使用 .fillNA() 填充数据,数据从 Quandl 中提取

python - 如果某些列的单元格值符合特定条件,如何分组并求和

python - 作为 DataFrame 列的 Scipy 稀疏矩阵

python - 使用相同的 'for' 循环和 'all()' 函数会产生不同的结果

python - 如何使用某些键对列表中的值求和?

python - celery 运行错误

python - Wikipedia api python 返回奇怪的结果

python - 如何使 Django slugify 与 Unicode 字符串一起正常工作?

c++ - 这是迭代 2 个不同大小的单链表和一个静态数组的最佳方法吗?