【问题标题】:Conditional raplacement with index shift in PandasPandas 中带有索引移位的条件置换
【发布时间】:2016-08-14 12:44:33
【问题描述】:

在数据框中有以下列:

0
0
0
0
0
5

我想检查大于阈值的值。如果找到,则设置为零并向上移动差异值阈值,在新位置上设置阈值。假设阈值=3,那么结果列必须是:

0
0
0
3
0
0

有快速转型的想法吗?

【问题讨论】:

  • 这个样本似乎不够有代表性。会发生什么如果我的阈值为 3,则值为 5,并且在下面两行中再次出现值为 5。它应该是 0 还是 3?
  • 这不可能发生。列中的值(假设为 5)是另一列中 0 或 1 的累积结果,表示序列的总和:如果彼此之后有 5 次 1,则其最后位置的值将是 5。所以累计值不能大于两个值的指数差。

标签: python pandas dataframe


【解决方案1】:

对于这个数据框:

df
出去:
    一个
0 0
1 0
2 0
3 0
4 0
5 5
6 0
7 0
8 0
9 0
10 6
11 0
12 0
threshold = 3
above_threshold = df['A'] > threshold
df.loc[df[above_threshold].index - (df.loc[above_threshold, 'A'] - 3).values, 'A'] = 3
df.loc[above_threshold, 'A'] = 0
df
出去:
    一个
0 0
1 0
2 0
3 3
4 0
5 0
6 0
7 3
8 0
9 0
10 0
11 0
12 0

【讨论】:

    猜你喜欢
    • 2015-01-01
    • 2016-05-07
    • 2018-06-04
    • 1970-01-01
    • 2013-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多