我有一个 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
是可变的?
最佳答案
我将 cumsum
与 agrsort
一起使用,然后通过 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/