【发布时间】:2020-06-17 02:37:51
【问题描述】:
所以,我有以下 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 ║
╚══════╩══════╩═══════╝
【问题讨论】:
-
更好地使用for循环
-
@YOBEN_S 这就是我想避免的,如果可能的话。
-
我不确定你是否可以,因为在你的操作中每一行都取决于前一行的结果......所以它们必须按顺序执行。 (也许你可以使用
apply或其他东西来避免显式循环,但这只是在引擎盖下循环......) -
各行的比例不同?
-
@QuangHoang 不,所有行的比率保持不变。