【发布时间】:2017-06-17 12:04:35
【问题描述】:
我有一个包含 10 列的数据框 (df)。该索引有许多不同的日期,但是有多个相同的日期(并且按日期排序)。此外,此问题的重要列是 df['Weight'] 和 df['Test']。
这是一个只有 1 个索引值(2017 年 1 月 21 日)的 2 列数据示例,实际上有多个具有多个权重的日期等。
Weight Test
1/21/2017 0.1 NaN
1/21/2017 0.04 0.04
1/21/2017 0.03 Nan
1/21/2017 0.02 Nan
1/21/2017 0.2 0.2
1/21/2017 0.001 Nan
1/21/2017 0.1 0.1
1/21/2017 0.21 0.21
1/21/2017 0.003 Nan
1/21/2017 0.01 0.01
1/21/2017 0.04 0.04
1/21/2017 0.005 Nan
1/21/2017 0.05 0.05
1/21/2017 0.1 Nan
1/21/2017 0.091 Nan
对于特定索引,df['Weight'] 加起来为 1,对于索引的每个唯一日期都是如此。
我创建了一个测试列,仅在满足条件时才显示权重。
现在我正在尝试创建一个列 df['adjusted weight'] 它将查看 Test 列,如果有 Nan 它会将 df['Weight'] 中的权重乘以 0.75 并将其分配给df['adjusted_weight'],然后是 df['Test'] 在特定日期不是 nan 的其余条目,df['Test'] 权重应按比例向上调整并分配给 df['adjusted weight'] 所以任何日期的 df['adjusted weight'] 的总和 =1。
我希望它灵活一些,因此我还可以将权重乘以 0.5 和 0.75,然后按比例计算其余部分等。
非常感谢大家的帮助和支持。
最好的祝愿。
【问题讨论】:
-
我不懂你的数学。
df.Test.sum() * 2 == 1.30那么您是否希望为Test is NaN所在的行添加否定条目? -
抱歉,我的错误。我实际上想要 Weight * 0.75 中的权重,然后向上调整测试权重。已解决问题。
-
这将有助于查看所需的输出。