重组 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
我有以下系列:
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