重组 Pandas 系列

Restructuring a Pandas series

我有以下系列:

r = [1,2,3,4,'None']
ser = pd.Series(r, copy=False)

其输出为-

ser
Out[406]: 
0       1
1       2
2       3
3       4
4    None

在 ser[1] 处,我想将值设置为 'NULL' 并复制 [2,3,4] 移动一个索引。

因此,所需的输出将是:

ser
Out[406]: 
0       1
1      NULL
2       2
3       3
4       4

我做了以下不起作用的事情:

slice_ser = ser[1:-1]
ser[2] = 'NULL'
ser[3:-1] = slice_ser

我遇到错误 'ValueError: cannot set using a slice indexer with a different length than the value'。我该如何解决这个问题?

您可以在位置 1 之后移动值并将其分配回去:

ser.iloc[1:] = ser.iloc[1:].shift()

ser
0      1
1    NaN
2      2
3      3
4      4
dtype: object

为此我会使用 shift

>>> ser[1:] = ser[1:].shift(1).fillna('NULL')
>>> ser
0       1
1    NULL
2       2
3       3
4       4
dtype: object