python - 将列添加到 df 并创建条件系列

标签 python pandas

我有一个 pandas 数据框 'df',其中一列名为“Value”,如下所示:

import pandas as pd
df = pd.DataFrame({'Value':[240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255]})

Value
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255

我想做的是添加第二列“NewValue”,这样我就可以得到这样的列:

Value NewValue
240   7
241   8
242   9
243   10
244   11
245   12
246   13
247   14
248   15
249   0
250   1
251   2
252   3
253   4
254   5
255   6

第二列应包含从 0 到 15 的升序序列,其中变量 zerovalue 定义值 0 的(索引)位置。在上面的示例中 zerovalue = 249.
我知道我可以添加一个新列并根据 rowIndex 更改行值,如下所示:

rowIndex = df.index[9]
df.loc[rowIndex, 'NewValue'] = 0

我如何添加包含上述示例中的系列的第二列,以及定义零列位置的 zerovalue 是可变的?

最佳答案

我将 cumsumagrsort 一起使用,然后通过 index 分配值

s=df.Value.eq(249).cumsum()
df.loc[s.iloc[(-s).argsort()].index,'NewValue']=np.arange(len(df))
df
Out[134]: 
    Value  NewValue
0     240         7
1     241         8
2     242         9
3     243        10
4     244        11
5     245        12
6     246        13
7     247        14
8     248        15
9     249         0
10    250         1
11    251         2
12    252         3
13    253         4
14    254         5
15    255         6

关于python - 将列添加到 df 并创建条件系列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56042252/

相关文章:

Python:从字符串添加决策列(Pandas)

Python 将缺失的行添加到数据框

python - 如何在Python中读取url目录

python - 更改等高线标签文本对象的方向

python - 使用 numpy 或 cython 进行高效的成对 DTW 计算

python - 动态更改回顾期

python - Pandas DF 到 Xarray 数据集

python - Pandas 在没有标题的表格中读取

python - 找到具有最大总和的连续子集

python - Django 对象管理器 'lower' 参数