python - 对 Pandas 系列进行算术运算以创建新系列

标签 python pandas

假设我有以下 Pandas 数据框

import numpy as np
import pandas as pd

这样我就有了以下数据框

+----+-----------+----------+----------+----------+
|    |         a |        b |        c |        d |
|----+-----------+----------+----------+----------|
|  0 | 0.462955  | 0.605148 | 0.481413 | 0.848894 |
|  1 | 0.341476  | 0.611664 | 0.419806 | 0.6367   |
|  2 | 0.0773736 | 0.795014 | 0.635595 | 0.154184 |
+----+-----------+----------+----------+----------+

假设我想修改 d 列,使得 d = a * b/c。 我可以使用 groupbyapply 获得以下内容

df.groupby(['a','b','c']).apply(lambda x: x['a'] * x['b'] / x['c'])

a         b         c          
0.077374  0.795014  0.635595  2    0.096780
0.341476  0.611664  0.419806  1    0.497535
0.462955  0.605148  0.481413  0    0.581946
dtype: float64

这在某种程度上是我正在寻找的,因为它包含所需的值,但距离所需的结果还很远。

你能帮帮我吗?

编辑:在我有非常大的过滤的情况下,该方法也应该可行。

最佳答案

你真的不需要 groupby 或任何函数(如果我没有误解的话)你可以简单地定义:

df['d'] = df['a'] * df['b'] / df['c']

例子:

data = {'a':[0.462955,0.341476,0.0773736],'b':[0.605148,0.611664,0.795014],'c':[0.481413,0.419806,0.635595]}
df = pd.DataFrame(data)
df['d'] = df['a'] * df['b'] / df['c']
print(df)

输出:

          a         b         c         d
0  0.462955  0.605148  0.481413  0.581946
1  0.341476  0.611664  0.419806  0.497536
2  0.077374  0.795014  0.635595  0.096780

关于python - 对 Pandas 系列进行算术运算以创建新系列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58342856/

相关文章:

python - 如何检查 List A 中的元素是否不存在于 Python 的 List B 中?

python - 如何在 python 中正确关闭 Selenium WebDriver 实例?

python - 如何通过使用 pandas 进行转换来不删除而是处理异常值?

python - 如何在 Python 中获取导入器文件名?

python - 在 Python 中,为什么不打印没有换行符的内容?

python - Google App Engine Flexi 上 Django 的 Postgres 设置

python - 删除 pandas 中的前导 NaN

python - 如何将 SQL Group by 结果传输到 Pandas 数据框

python - 来自 Dataframe 的条形图

pandas 要分组的数据框列表