在df-python中的特定值后插入nan
我试图在df中的特定值之后将nan插入到列中。使用下面的在df-python中的特定值后插入nan,python,pandas,Python,Pandas,我试图在df中的特定值之后将nan插入到列中。使用下面的Item==Orange,我希望用nan替换'Val1','Val2'中的后续行 df = pd.DataFrame({ 'Time' : [1,1,1,2,2,2,3,3,3,4,4,4], 'Group' : ['A','B','A','A','B','A','A','B','A','A','B','A'], 'Item' : ['Red','Blue','Orange','Red','
Item==Orange
,我希望用nan替换'Val1','Val2'
中的后续行
df = pd.DataFrame({
'Time' : [1,1,1,2,2,2,3,3,3,4,4,4],
'Group' : ['A','B','A','A','B','A','A','B','A','A','B','A'],
'Item' : ['Red','Blue','Orange','Red','Blue','Orange','Red','Blue','Orange','Red','Blue','Orange'],
'Val1' : [-2.0,-1.0,-1.0,0.0,0.0,1.0,0.0,1.0,2.0,-1.0,0.0,0.0],
'Val2' : [-2.0,-1.0,-2.0,-1.0,-2.0,-1.0,0.0,1.0,3.0,-2.0,-1.0,-2.0],
})
df.loc[df['Item'].isin(['Orange']), ['Val1','Val2']].shift(1) = np.nan
通过以上尝试,我得到了一个SyntaxError:
File "<ipython-input-11-c3d6ab463712>", line 11
df.loc[df['Item'].isin(['Orange']), ['Val1','Val2']].shift(1) = np.nan
^
SyntaxError: can't assign to function call
哦,你太近了
您需要重新安排一些内容,并确保布尔掩码中没有任何NAN:
df.loc[df['Item'].isin(['Orange']).shift(1).fillna(False),['Val1','Val2']=np.nan
Time Group Item Val1 Val2
0 1 A Red -2.0 -2.0
1 1 B Blue -1.0 -1.0
2 1 A Orange -1.0 -2.0
3 2 A Red NaN NaN
4 2 B Blue 0.0 -2.0
5 2 A Orange 1.0 -1.0
6 3 A Red NaN NaN
7 3 B Blue 1.0 1.0
8 3 A Orange 2.0 3.0
9 4 A Red NaN NaN
10 4 B Blue 0.0 -1.0
11 4 A Orange 0.0 -2.0