因此,我有以下 Pandas DataFrame,其中第三列(比率)中的所有值都相同:
import pandas as pd
df = pd.DataFrame([[2, 10, 0.5],
[float('NaN'), 10, 0.5],
[float('NaN'), 5, 0.5]], columns=['Col1', 'Col2', 'Ratio'])
╔══════╦══════╦═══════╗
║ Col1 ║ Col2 ║ Ratio ║
╠══════╬══════╬═══════╣
║ 2 ║ 10 ║ 0.5 ║
║ NaN ║ 10 ║ 0.5 ║
║ NaN ║ 5 ║ 0.5 ║
╚══════╩══════╩═══════╝
我想知道是否有一种方法可以将 Col1 * Ratio 相乘,然后将该乘积的输出添加到 Col2 并使用 pandas 提供的函数将值附加到下一行 Col1。
输出示例:
╔══════╦══════╦═══════╗
║ Col1 ║ Col2 ║ Ratio ║
╠══════╬══════╬═══════╣
║ 2 ║ 10 ║ 0.5 ║
║ 11 ║ 10 ║ 0.5 ║
║ 15.5 ║ 5 ║ 0.5 ║
╚══════╩══════╩═══════╝
最佳答案
我认为numba如果性能很重要,这里就是如何使用循环的方式:
from numba import jit
@jit(nopython=True)
def f(a, b, c):
for i in range(1, a.shape[0]):
a[i] = a[i-1] * c[i-1] + b[i-1]
return a
df['Col1'] = f(df['Col1'].to_numpy(), df['Col2'].to_numpy(), df['Ratio'].to_numpy())
print (df)
Col1 Col2 Ratio
0 2.0 10 0.5
1 11.0 10 0.5
2 15.5 5 0.5
关于python - 将三列之间的数学运算结果附加到下一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60528836/