假设我有以下 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
。
我可以使用 groupby
和 apply
获得以下内容
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/